Javascript 通过_id数组的MongoDB请求(可能吗?)
例如,我有n文档:Javascript 通过_id数组的MongoDB请求(可能吗?),javascript,mongodb,mongodb-.net-driver,Javascript,Mongodb,Mongodb .net Driver,例如,我有n文档: { _id : 1 } { _id : 2 } { _id : 3 } ... { _id : n } 通过某种逻辑,我得到了m\u id的数组:[1,30,500,1001,…,I] 是否可以使用_id数组发出一个请求来检索这些m文档的游标?我不想单独提出以下要求: db.things.findOne({u id:1}) db.things.findOne({u id:30}) db.things.findOne({u id:500}) db.things.findOne
{ _id : 1 }
{ _id : 2 }
{ _id : 3 }
...
{ _id : n }
通过某种逻辑,我得到了m\u id的数组:[1,30,500,1001,…,I]
是否可以使用_id数组发出一个请求来检索这些m文档的游标?我不想单独提出以下要求:
db.things.findOne({u id:1})代码>
db.things.findOne({u id:30})代码>
db.things.findOne({u id:500})代码>
db.things.findOne({u id:1001})代码>
db.things.findOne({u id:i})代码>
如果可能的话,如何在JavaScript Shell和官方C#driver上实现这一点
谢谢你 要使用C#驱动程序执行此操作:
c = db.things.find({_id:{$in:[1,30,500,1001,...,i]}})
要使用C#Driver执行此操作:
这不仅是正确的,而且非常有效。请注意,使用带有$in
的大型数组实际上相当于运行许多独立查询,如果列表很长,则速度仍然会很慢。由于mongo和客户端之间的带宽使用减少,因此速度始终会更快。但你是对的$in有一个O(n)性能配置文件,这意味着它将随着n的增加而线性变慢。这不仅是正确的,而且非常有效。请注意,在
中使用带有$的大型数组实际上相当于运行许多独立查询,如果列表很长,速度仍然会很慢。由于mongo和客户端之间的带宽使用减少,速度总是会更快。但你是对的$in有一个O(n)性能曲线,这意味着它将随着n的增加而线性变慢。
var documentIds = new BsonValue[] { ObjectId.Parse("id1"), ObjectId.Parse("id2")};
var query = Query.In("_id", documentIds);