在多个对象id上使用$ in

时间:2016-07-27 17:46:41

标签: mongodb mongodb-query nosql

我遇到了导致正确的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”字段。

1 个答案:

答案 0 :(得分:1)

你几乎拥有它:

{ "_id": { $in: [  "$oid": "123","$oid": "456"  ]} } 
should read
{ "_id":{ $in:[{"$oid":"123"},{"$oid":"456"}]}} 

您传入了一个数组,但因为您正在搜索_id字段,因此需要为每个项目发送{"$oid":"oid_value"}