如何在Mongodb中使用mongoose匹配对象数组中的键



一个文档包含一个对象数组,每个对象包含一个键,我想在mongoose中找到所有与键匹配的对象。下面是示例模式:

const TalentSchema = new mongoose.Schema({
name: String,
dev_task: [
{
development_training: {
type: mongoose.Schema.Types.ObjectId,
ref: 'TrainingModule',
},
developlink: String,
},
],  
})

我想匹配具有development_training给定Id的文档。我该怎么做呢?

更新:样本数据

[
{
"name": "name1",
"dev_task": [
{
"development_training": 1,
"developlink": ""
},
{
"development_training": 2,
"developlink": ""
}
]
},
{
"name": "name2",
"dev_task": [
{
"development_training": 1,
"developlink": ""
}
]
},
]

它应该返回This: -

[
{
"_id": ObjectId("5a934e000102030405000000"),
"dev_task": [
{
"developlink": "",
"development_training": 1
}
],
"name": "name1"
},
{
"_id": ObjectId("5a934e000102030405000001"),
"dev_task": [
{
"developlink": "",
"development_training": 1
}
],
"name": "name2"
}
]

如文档中所述,mongo使用点表示法。

MongoDB使用点表示法访问数组的元素和访问嵌入文档的字段。.

这正是我们想要的。

所以要访问你的文档,你需要这样做dev_task.development_training到查找查询:

db.collection.find({
"dev_task.development_training": 1
})

例子

注意,使用mongoose是相同的查询:

yourModel.findOne({"dev_task.development_training": yourId}).then(result => {/*...*/})

最新更新