我遇到了导致正确的MongoDB查询的问题。我正在尝试使用find操作来制定查询,该操作将一次检索多个指定的ID。请注意,我不能使用ObjectId()函数。我需要使用普通运算符,如$或,$和,$ in等。
MongoDB中的数据集具有如下所示的行:
{ $or: [{ "_id": { "$oid": "123" } },{ "_id": { "$oid": "456"}}]}
我已经能够以下列方式使用$或成功,但由于MongoDB文档建议使用$ in over $或性能,我想知道如何使用$ in:
{ "_id": { $in: ["123", "456"] } }
{ "_id": { $in: [ "$oid": "123","$oid": "456" ]} }
{ "_id.$oid": { $in: ["123", "456"] } }
我尝试了以下查询,但没有一个返回任何结果:
<a class="blue" href="url">link text</a>
作为最后一点,我不能使用任何完全隔离对象id的查询,因为我也在查询每个匹配对象id的“someField”字段。
答案 0 :(得分:1)
你几乎拥有它:
{ "_id": { $in: [ "$oid": "123","$oid": "456" ]} }
should read
{ "_id":{ $in:[{"$oid":"123"},{"$oid":"456"}]}}
您传入了一个数组,但因为您正在搜索_id
字段,因此需要为每个项目发送{"$oid":"oid_value"}