【问题标题】:Find object in array, to return the objects data在数组中查找对象,返回对象数据
【发布时间】:2017-07-22 12:18:36
【问题描述】:

我在 mongo 数据库中有条目,其中包含每日条目,我试图在数组中查找特定条目。例如,尝试使用 mongoose 在日期为该用户查找可口可乐。

"_id": ObjectId("ID"),
"user_id": ObjectId("ID"),
"date": today,
"snacks": 
[
  {
    "nutrients": [{...}],
    "servings": 1,
    "name": "Coca-Cola"
  }
]

user_food.find({user_id : req.session.user_id, date: today}, {snacks:{[name:{"Coca-Cola"}]}}

我可以使用以下查询按日期查询和检索完整条目:

user_food.findOne({user_id : req.session.user_id, date: today}, function (err, diary) {...});

我唯一的问题是仅通过名称获取特定条目对象:snack - name。

【问题讨论】:

  • 您可以过滤零食数组,这将返回与名称有关的数组(在本例中为可口可乐)obj. snacks.filter((snackItem) => snackItem.name === 'Coca-Cola')

标签: javascript node.js mongodb mongoose database


【解决方案1】:

您可以将查询更改为如下所示:

user_food.find({user_id : req.session.user_id, date: today, 'snacks.name': 'Coca-Cola' })

这只会找到零食名称为“可口可乐”的文档,如果您只想发回相关信息,则可以对其进行投影

【讨论】:

  • 对不起,如果我不清楚,我只想从查询中返回 { "nutrients": [{...}], "servings": 1, "name": "Coca-Cola" }
猜你喜欢
  • 2019-06-14
  • 2017-02-02
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 2021-05-05
  • 2021-01-15
相关资源
最近更新 更多