2014-10-27 98 views
1

我有ObjectID秒的阵列排列,代表一个集合中的文档_id值:查询通过的ObjectID

ObjectID[] documentsAffected 

我如何可以准备一个查询,返回所有在此数组中引用的文件?

我已经看过以下,但只与个别值,而不是数组的工作原理:

Query.EQ("_id", documentsAffected) 

我不想写一个for循环,并在某一时刻要么返回一个文档,因为然后,我需要以相同的方式更新这些文档,这似乎是低效的,因为我可以在全部检索完所有语句后在一个语句中更新它们。

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

回答

1

可以使用In代替EQ

Query.In("_id", documentsAffected); 

或者更好,使用类型选择:

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

这将使用$in运营商创建一个查询

$ in操作符选择字段值等于的文档指定数组中的任何值。如果该字段持有数组,然后在运营商$选择其字段保存包含指定数组

在相匹配的值从$in

+1

感谢至少一个元素的数组的文件!我最终使用了你指定的第二个选项。 – CynicalProgrammer 2014-10-30 18:15:07