MongoDB选择_id数组的位置?

its*_*sme 72 javascript arrays mongodb node.js express

可以在mongo db中选择像SQL一样的集合文档:

SELECT * FROM collection WHERE _id IN (1,2,3,4);
Run Code Online (Sandbox Code Playgroud)

或者,如果我有一个_id array我必须逐个选择,然后重新组合array/object结果?

pro*_*ook 132

简单 :)

db.collection.find( { _id : { $in : [1,2,3,4] } } );
Run Code Online (Sandbox Code Playgroud)

取自:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in

  • 如果“ _id”是ID对象,则必须使用ObjectId函数-{_id:{$ in:[ObjectId(“ 5a633609670aeb6f93b88b23”)]}} (4认同)
  • 你做。然而,时间复杂度是线性的(n),而不是对数/常数。如果没有索引,它将是 n^2。 (2认同)

小智 8

你可以试试这个

var ids = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"];

var oids = [];
ids.forEach(function(item){
oids.push(new ObjectId(item));
});

.find({ _id: {$in : oids}})
Run Code Online (Sandbox Code Playgroud)


ttr*_*asn 6

因为mongodb 使用bsonand for bson 是重要的属性类型。因为_idObjectId你必须使用这样的:

db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
Run Code Online (Sandbox Code Playgroud)

mongodb compass像这样使用:

{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Run Code Online (Sandbox Code Playgroud)

注意:字符串中的 objectId 有24长度。


KAR*_*N.A 5

list 是一个 id 数组

在此代码列表中是用户集合中的 id 数组

var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"]

    .find({ _id: {$in : list}})
Run Code Online (Sandbox Code Playgroud)

  • 该代码不起作用。似乎必须将 ID 设置为 ObjectId("5883d387971bb840b7399130") (4认同)