我的猫鼬查询有问题。
我正在尝试检查具有ID的对象是否在对象数组中。
所以我的查询就像
db.getCollection('adunits').find(
{_id: ObjectId("5bd9bc1ca4efae39d0b5a58e")},
{$in : ["5bf510156c154934150ef006","5bf5309e6c154934150f00a6","5bd9b874a4efae39d0b5a58d","5bf52a876c154934150efe4a"]}
)
如您所见,我的ObjectId(“ 5bd9 ...”)不在数组中。但是我的查询返回带有ObjectId(“ 5bd9 ...”)的文档。 $ in操作符不是应该检查_id in参数是否在数组中吗? 我希望它可以返回“ 0提取的文档”,因为传递的ID不在数组中。
预先感谢
答案 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"
]
}
});