Javascript 如何使用mongoose在Mongodb中匹配对象数组中的键
一个文档包含一个对象数组,每个对象都包含一个键。我想在mongoose中找到与该键匹配的所有对象。 下面是示例模式:Javascript 如何使用mongoose在Mongodb中匹配对象数组中的键,javascript,mongodb,typescript,mongoose,Javascript,Mongodb,Typescript,Mongoose,一个文档包含一个对象数组,每个对象都包含一个键。我想在mongoose中找到与该键匹配的所有对象。 下面是示例模式: const TalentSchema = new mongoose.Schema({ name: String, dev_task: [ { development_training: { type: mongoose.Schema.Types.ObjectId, ref: 'Training
const TalentSchema = new mongoose.Schema({
name: String,
dev_task: [
{
development_training: {
type: mongoose.Schema.Types.ObjectId,
ref: 'TrainingModule',
},
developlink: String,
},
],
})
我想将经过开发培训的文档与给定Id匹配。
我该怎么做
更新:
样本数据
[
{
"name": "name1",
"dev_task": [
{
"development_training": 1,
"developlink": ""
},
{
"development_training": 2,
"developlink": ""
}
]
},
{
"name": "name2",
"dev_task": [
{
"development_training": 1,
"developlink": ""
}
]
},
]
它应返回以下内容:-
[
{
"_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\u task.development\u training
查找查询:
db.collection.find({
“开发任务.开发培训”:1
})
范例
请注意,使用mongoose是相同的查询:
yourModel.findOne({“dev_task.development_training”:yourId})
你的意思是?是的,这正是我想要的。不客气,我也发布了一个答案,解释它,以防对其他用户有用。嘿,J.F,我有一个疑问。此查询返回至少有一个对象具有“dev_task.development_training”的所有对象:1还返回有两个对象具有不同dev.task.development_training的数组。请检查我刚刚更新的问题!