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 arraysaya harus memilih satu per satu dan kemudian menyusun ulang array/objecthasilnya?
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 nukuran koleksinya dan mjumlah id yang diteruskan?
Karena penggunaan mongodb bsondan untuk bson adalah tipe atribut yang penting. dan karena _idadalah ObjectIdAnda harus menggunakan seperti ini:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
dan di mongodb compasspakai seperti ini:
{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Catatan: objectId dalam string memiliki 24panjang.
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 aggregatedanmatch
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");