按ObjectIds数组查询

时间:2014-10-27 13:28:18

标签: c# .net mongodb mongodb-query mongodb-.net-driver

我有一个ObjectID数组,代表集合中文档的_id值:

ObjectID[] documentsAffected

如何准备查询以返回此数组中引用的所有文档?

我查看了以下内容,但它仅适用于单个值,而不适用于数组:

Query.EQ("_id", documentsAffected)

我不想写一个for循环,并且一次也要返回一个文档,因为我需要以相同的方式更新这些文档,而且当我可以在一个语句中更新它们之后这似乎效率低下检索它们。

有没有办法有效地做到这一点?如果没有,是否有另一种方法可以根据引用它们的某些项目列表返回所有文档?

1 个答案:

答案 0 :(得分:1)

您可以使用In代替EQ

Query.In("_id", documentsAffected);

或者更好的是,使用键入的选项:

Query<Document>.In(doc => doc.Id, documentsAffected);

这将使用$in运算符创建查询:

  

$ in运算符选择字段值等于指定数组中任何值的文档。如果该字段包含数组,那么$ in运算符将选择其字段包含一个数组的文档,该数组至少包含一个与指定数组中的值匹配的元素

来自$in