mungkin di mongo db untuk memilih dokumen koleksi seperti di SQL:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
atau jika saya memiliki, _id array
saya harus memilih satu per satu dan kemudian menyusun ulang array/object
hasilnya?
Mudah :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
diambil dari: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
O(log(n) * m)
manan
ukuran koleksinya danm
jumlah id yang diteruskan?Dalam daftar kode ini adalah larik id dalam koleksi pengguna
var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"] .find({ _id: {$in : list}})
sumber
Karena penggunaan mongodb
bson
dan untuk bson adalah tipe atribut yang penting. dan karena_id
adalahObjectId
Anda harus menggunakan seperti ini:db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
dan di
mongodb compass
pakai seperti ini:{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Catatan: objectId dalam string memiliki
24
panjang.sumber
Jika Anda ingin mencari berdasarkan pengguna dan juga oleh bidang lain seperti kondisional, Anda dapat dengan mudah melakukannya seperti di bawah dengan operator spread dan terner menggunakan
aggregate
danmatch
const p_id = patient_id; let fetchingReports = await Reports.aggregate([ ...(p_id ? [ { $match: { createdBy: mongoose.Types.ObjectId(id), patient_id: p_id, }, }, ] : [ { $match: { createdBy: mongoose.Types.ObjectId(id), }, },
sumber
Ini tidak terkait dengan kueri mongo. Saya terbiasa dengan SQL dan menggunakan Studio3T IDE untuk meminta database mongo menggunakan SQL. Jika Anda seperti saya, saya ingin menunjukkan bahwa nilai id perlu diketik. Jadi kueri akan terlihat seperti:
SELECT _id from <collectionName> WHERE _id = ObjectId("5883d387971bb840b7399130");
sumber