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 array
tôi phải chọn từng cái một và sau đó sắp xếp lại array/object
kế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 n
là kích thước của bộ sưu tập và m
số id được chuyển qua?
Bởi vì mongodb sử dụng bson
và cho bson là các loại thuộc tính quan trọng. và vì _id
là ObjectId
bạn phải sử dụng như thế này:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
và đang được mongodb compass
sử 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");