có thể trong mongo db để chọn các tài liệu của bộ sưu tập như trong SQL:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
hoặc nếu tôi có một _id arraytôi phải chọn từng cái một và sau đó sắp xếp lại array/objectkết quả?
Câu trả lời:
Dễ dàng :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
lấy từ: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
O(log(n) * m)ở đâu nlà kích thước của bộ sưu tập và msố id được chuyển qua?
Bởi vì mongodb sử dụng bsonvà cho bson là các loại thuộc tính quan trọng. và vì _idlà ObjectIdbạn phải sử dụng như thế này:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
và đang được mongodb compasssử dụng như thế này:
{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Lưu ý: objectId trong chuỗi có 24độ dài.
Điều này không liên quan đến truy vấn mongo. Tôi đã quen thuộc với SQL và sử dụng Studio3T IDE để truy vấn cơ sở dữ liệu mongo bằng SQL. Nếu bạn cũng như tôi, tôi muốn chỉ ra rằng giá trị id cần phải được đánh máy. Vì vậy, truy vấn sẽ giống như sau:
SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");