у mongo db можна вибрати документи колекції, як у SQL:
SELECT * FROM collection WHERE _id IN (1,2,3,4);
або якщо у мене є, _id array
я повинен вибрати один за одним, а потім перекомпонувати array/object
результати?
Відповіді:
Легко :)
db.collection.find( { _id : { $in : [1,2,3,4] } } );
взято з: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
O(log(n) * m)
там n
розмір колекції та m
чи кількість переданих ідентифікаторів?
Оскільки mongodb використовує bson
і для bson, це важливі типи атрибутів. і тому , що _id
це ObjectId
ви повинні використовувати так:
db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );
і mongodb compass
використовується у такий спосіб:
{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }
Примітка: objectId у рядку має 24
довжину.
якщо ви хочете , щоб знайти користувачем , а також інше поле , як умовно, ви можете легко зробити це , як під з поширенням і потрійний оператор з використанням aggregate
іmatch
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),
},
},
Це не пов'язано з запитом mongo. Я був знайомий з SQL і використовував IDE Studio3T для запиту бази даних mongo за допомогою SQL. Якщо ви подібні до мене, я хочу зазначити, що значення ідентифікатора потрібно вводити. Тож запит буде виглядати так:
SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");