【问题标题】:Query by array of ObjectIds按 ObjectId 数组查询
【发布时间】:2014-10-27 13:28:17
【问题描述】:

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

ObjectID[] documentsAffected

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

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

Query.EQ("_id", documentsAffected)

我不想编写一个 for 循环,也不想一次返回一个文档,因为我需要以相同的方式更新这些文档,当我可以在一个语句中更新它们时,这似乎效率低下将它们全部检索出来。

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用In 代替EQ

    Query.In("_id", documentsAffected);
    

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

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

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

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

    来自$in

    【讨论】:

    • 谢谢!我最终使用了您指定的第二个选项。
    猜你喜欢
    • 2016-06-13
    • 2017-07-22
    • 1970-01-01
    • 2011-06-01
    • 2014-07-01
    • 1970-01-01
    • 2022-12-12
    • 2012-02-03
    相关资源
    最近更新 更多