我有一个ObjectID
数组,代表集合中文档的_id
值:
ObjectID[] documentsAffected
如何准备查询以返回此数组中引用的所有文档?
我查看了以下内容,但它仅适用于单个值,而不适用于数组:
Query.EQ("_id", documentsAffected)
我不想写一个for循环,并且一次也要返回一个文档,因为我需要以相同的方式更新这些文档,而且当我可以在一个语句中更新它们之后这似乎效率低下检索它们。
有没有办法有效地做到这一点?如果没有,是否有另一种方法可以根据引用它们的某些项目列表返回所有文档?
答案 0 :(得分:1)
您可以使用In
代替EQ
:
Query.In("_id", documentsAffected);
或者更好的是,使用键入的选项:
Query<Document>.In(doc => doc.Id, documentsAffected);
这将使用$in
运算符创建查询:
$ in运算符选择字段值等于指定数组中任何值的文档。如果该字段包含数组,那么$ in运算符将选择其字段包含一个数组的文档,该数组至少包含一个与指定数组中的值匹配的元素
来自$in