一个文档包含一个对象数组,每个对象包含一个键,我想在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 => {/*...*/})