猫鼬在数组列表中通过_id查找集合

时间:2020-02-19 08:37:07

标签: mongodb mongoose

这是我的模式

var PositiveSchema = new mongoose.Schema({
    schoolID: {
        type: mongoose.Schema.Types.ObjectId, ref: 'School'
    },
    name: String,
    restrictAwardTo: Object
})

现在restrictAwardTo以这种格式保存数据

"restrictAwardTo" : [ 
        {
            "_id" : "5c31907d908eb8404657cbf0",
            "firstName" : "Admin 2a"
        }, 
        {
            "_id" : "5c1a7677c98da061141475a8",
            "firstName" : "Justice"
        }, 
        {
            "_id" : "5c1a7677c98da061141475a9",
            "firstName" : "Itik"
        }
    ],

如何使用_id下列出的restrictAwardTo之一搜索文档?我尝试了下面给出的解决方案

更新:在Robo3t中,此查询db.getCollection('positives').find({ 'restrictAwardTo._id' : {$in: ['5c1a7677c98da061141475a7']} })有效。现在,我也使其适用于猫鼬。

2 个答案:

答案 0 :(得分:0)

这是对我有用的猫鼬:

Positive.find({ schoolID:  mongoose.mongo.ObjectId(schoolID), "restrictAwardTo._id": { $in: [userID]} })

但是我不确定大型记录的性能。

答案 1 :(得分:0)

您可以通过这种方式。

Positive.findOne({'restrictAwardTo': {$elemMatch: {_id: userID}}}, 
        (err,schoolInfo) => { });