Mongoose在子文档中查找具有值的元素

时间:2017-08-30 18:16:12

标签: mongodb express mongoose

我的模特

ActivityLanguage
language_id: ID
name: String

Activity
price: Int
languages: [ActivityLanguage]

我想要做的是找到具有某个language_id的ActivityLanguage的活动。

这就像我需要的那样(在mongo中)

db.activities.find({"languages.language_id": "59640de1675c1481820a543e" }, {"languages.$": 1})

我怎样才能在猫鼬中实现它?

我已尝试使用:

Activity.find({'languages.language_id': language_id})

Activity.find({"languages": {$elemMatch: { language_id: language_id }}})

它们都返回一个空数组(我已经对我的数据库进行了三次检查,确认存在具有该条件的活动)。我也尝试了在StackOverflow中找到的所有答案,但没有成功

我如何在猫鼬中实现它?

1 个答案:

答案 0 :(得分:0)

您可以使用Mongoose model.populate

从你的例子:

Activity.
  find({}).
  populate({
    path: 'languages',
    model: 'ActivityLanguage',
    match: { language_id: ID }  //here you define your language_id criteria
  }).
  exec()