Оператор проекции MongoDB - $
Описание
В MongoDB позиционный оператор $ используется для ограничения только первого совпадающего элемента из поля массива, и это произошло, хотя в массиве более одного совпадающего элемента.
Оно должно требовать появления поля <array> в документе запроса.
Один позиционный оператор $ может появиться только в проекционном документе.
За один раз в документе запроса может появиться только одно поле массива;
Синтаксис:
> db.collection.find ({<array>: <value> ...}, {"<array>. $": 1})
или же
db.collection.find ({<array.field>: <value & gt; ...}, {"<array>. $": 1})
Параметры:
<массив> - имя массива
<значение> - это могут быть документы, содержащие выражения оператора запроса.
field - имя столбца или поля коллекции.
Имя нашей базы данных - «myinfo», а имя нашей коллекции - «mediitem». Вот коллекция ниже.
Коллекция образцов "Медиитем"
{ "_id" : 1, "batch" : 1, "quantity" : [ 200, 225, 190 ] }
{ "_id" : 2, "batch" : 1, "quantity" : [ 190, 288, 192 ] }
{ "_id" : 3, "batch" : 1, "quantity" : [ 185, 210, 290 ] }
{ "_id" : 4, "batch" : 2, "quantity" : [ 179, 185, 180 ] }
{ "_id" : 5, "batch" : 2, "quantity" : [ 188, 188, 292 ] }
{ "_id" : 6, "batch" : 2, "quantity" : [ 295, 190, 196 ] }
Пример: оператор проекции MongoDB - $
В следующем запросе проекция {"amount. $": 1} возвращает только первый элемент, больший или равный 180 для поля количества.
> db.mediitem.find( { batch: 1, quantity: { $gte: 180 } },{ "quantity.$": 1 } ). pretty();
Примечание. Метод find () отображает документы в неструктурированном формате, но для отображения результатов в отформатированном виде можно использовать метод pretty ().
Вывод команды:
{"_id": 1, "количество": [200]} {"_id": 2, "количество": [190]} {"_id": 3, "количество": [185]}
Хотя количество полей массива содержит несколько элементов, которые больше или равны 180, оператор $ projection возвращает только первый соответствующий элемент из массива.
Коллекция образцов "Медиитем"
{
"_id" : 1,
"batch" : 1,
"statement" : [
{
"qty" : 200,
"prate" : 50,
"mrp" : 70
},
{
"qty" : 250,
"prate" : 52,
"mrp" : 60
},
{
"qty" : 190,
"prate" : 55,
"mrp" : 75
}
]
}
{
"_id" : 2,
"batch" : 1,
"statement" : [
{
"qty" : 210,
"prate" : 54,
"mrp" : 64
},
{
"qty" : 225,
"prate" : 50,
"mrp" : 65
},
{
"qty" : 195,
"prate" : 60,
"mrp" : 65
}
]
}
Пример: оператор проекции MongoDB - $ с сортировкой
Если мы хотим вернуть первый элемент, который соответствует условию, qty больше 200 для поля оператора из набора элементов в порядке возрастания, можно использовать следующий запрос mongodb.
>db.mediitem.find( { "statement.qty": { $gt: 200 } },
{ "statement.$": 1 }).sort( { "statement.qty": 1 } ).pretty();
Примечание. Метод find () отображает документы в неструктурированном формате, но для отображения результатов в отформатированном виде можно использовать метод pretty ().
В приведенном выше запросе projection {"Statement. $": 1} возвращает только первый элемент с количеством больше 200 для поля оператора. Запрос также включает сортировку () для упорядочения по возрастающему полю Statement.qty:
Вывод команды:
{ "_id": 2, "заявление" : [ { кол-во: 210, "prate": 54, mrp: 64 } ] } { "_id": 1, "заявление" : [ { кол-во: 250, "prate": 52, mrp: 60 } ] }
Предыдущая: $ size
Далее: $ elemMatch (проекция)
Новый контент: Composer: менеджер зависимостей для PHP , R программирования