查询找到猫鼬返回一个文档,而不是它的$ in数组

时间:2018-12-20 16:34:10

标签: node.js mongodb mongoose

我的猫鼬查询有问题。

我正在尝试检查具有ID的对象是否在对象数组中。

所以我的查询就像

db.getCollection('adunits').find(
{_id: ObjectId("5bd9bc1ca4efae39d0b5a58e")},
    {$in : ["5bf510156c154934150ef006","5bf5309e6c154934150f00a6","5bd9b874a4efae39d0b5a58d","5bf52a876c154934150efe4a"]}

)

如您所见,我的ObjectId(“ 5bd9 ...”)不在数组中。但是我的查询返回带有ObjectId(“ 5bd9 ...”)的文档。 $ in操作符不是应该检查_id in参数是否在数组中吗? 我希望它可以返回“ 0提取的文档”,因为传递的ID不在数组中。

预先感谢

2 个答案:

答案 0 :(得分:0)

您的查询不正确。

您可以按以下方式通过ID查找

db.getCollection('adunits')
    .find({_id: ObjectId("5bd9bc1ca4efae39d0b5a58e")})

获取单个文档或像这样使用$ in运算符

db.getCollection('adunits')
    .find({_id: { $in: ["5bf510156c154934150ef006","5bf5309e6c154934150f00a6",...]})

将返回文档,该文档具有数组中提供的ID之一。

答案 1 :(得分:0)

您查询条件时找到_id = ObjectId(“ 5bd9bc1ca4efae39d0b5a58e”)的广告单元,它返回与给定条件匹配的值。而$ in运算符应应用于字段。您是否正在尝试实现某种操作,例如在给定数组中查找与ID匹配的文档。如果是,请将代码更改为以下内容。访问mongodb官方https://docs.mongodb.com/manual/reference/operator/query/in/

db.getCollection('adunits').find(
 { "_id": 
       { $in: 
             [ "5bf510156c154934150ef006",
               "5bf5309e6c154934150f00a6",
               "5bd9b874a4efae39d0b5a58d",
               "5bf52a876c154934150efe4a"
            ]
      }
});