mongo db'de SQL'de olduğu gibi koleksiyonun belgelerini seçmek mümkündür:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
veya eğer varsa _id array, tek tek seçip array/objectsonuçları yeniden oluşturmalıyım?
Yanıtlar:
Kolay :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in adresinden alınmıştır
O(log(n) * m)nerede değil mi ve kimliklerin sayısı geçiyor mu? nm
Çünkü mongodb kullanır bsonve bson için önemli öznitelik türleri. ve çünkü _idbunun ObjectIdgibi kullanmanız gerekir:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
ve şu şekilde mongodb compasskullanımda:
{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Not: string'deki objectId'nin 24uzunluğu vardır.
Eğer kullanıcı tarafından ve ayrıca şartlı gibi başka alana göre bulmak istiyorsanız, kolayca yayılma ve üçlü operatör kullanılarak altında gibi yapabilir aggregatevematch
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),
},
},
Bu, mongo sorgusuyla ilgili değildir. SQL ile tanıştım ve SQL kullanarak bir mongo veritabanını sorgulamak için Studio3T IDE kullandım. Benim gibiyseniz, id değerinin yazılması gerektiğini belirtmek isterim. Böylece sorgu şöyle görünecektir:
SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");