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?
Jawaban:
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)
mana n
ukuran koleksinya dan m
jumlah id yang diteruskan?
Karena penggunaan mongodb bson
dan untuk bson adalah tipe atribut yang penting. dan karena _id
adalah ObjectId
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.
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),
},
},
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");