MongoDB Query Operator Array - $ elemMatch
Описание
Оператор MongoDB $ elemMatch сопоставляет более одного компонента в элементе массива.
Имя нашей базы данных - «myinfo», а имя нашей коллекции - «table1». Вот коллекция ниже.
Коллекция образцов "table1"
{
"_id" : ObjectId("5285bd678154c4747b705b4f"),
"item_code" : "I001",
"category" : [
"boy",
"girl"
],
"description" : [
{
"agegroup" : "3-5",
"flavour" : "chocolate",
"price" : 5
},
{
"agegroup" : "6-9",
"flavour" : "strawberry",
"price" : 6
},
{
"agegroup" : "10-13",
"flavour" : "mango",
"price" : 7
}
]
}
{
"_id" : ObjectId("5285bd808154c4747b705b50"),
"item_code" : "I002",
"category" : [
"boy",
"girl"
],
"description" : [
{
"agegroup" : "3-5",
"flavour" : "vanilla",
"price" : 3
},
{
"agegroup" : "6-9",
"flavour" : "lemon",
"price" : 6
},
{
"agegroup" : "10-13",
"flavour" : "mango",
"price" : 5
}
]
}
{
"_id" : ObjectId("5285bd8a8154c4747b705b51"),
"item_code" : "I003",
"category" : [
"boy",
"girl"
],
"description" : [
{
"agegroup" : "3-5",
"flavour" : "pineapple",
"price" : 5
},
{
"agegroup" : "6-9",
"flavour" : "mango",
"price" : 6
},
{
"agegroup" : "10-13",
"flavour" : "vanilla",
"price" : 5
}
]
}
Пример - 1 оператора оценочного запроса MongoDB - $ elemMatch
Если мы хотим выбрать все документы из коллекции "table1", которые удовлетворяют условиям в выражении $ elemMatch в описании массива -
Возрастная группа должна быть в пределах «3-5»
Цена должна быть равна 5
можно использовать следующую команду mongodb:
>db.table1.find( { "description": { $elemMatch: { "agegroup" : "3-5","price" : 5}}}).pretty();
Примечание. Метод find () отображает документы в неструктурированном формате, но для отображения результатов в отформатированном виде можно использовать метод pretty ().
Выход:
{ "_id": ObjectId ("5285bd678154c4747b705b4f"), "item_code": "I001", "категория": [ «Мальчик», «Девочка» ], "описание" : [ { «возрастная группа»: «3-5», "аромат": "шоколад", "цена": 5 }, { "возрастная группа": "6-9", "аромат": "клубника", "цена": 6 }, { «возрастная группа»: «10-13», "аромат": "манго", "цена": 7 } ] } { "_id": ObjectId ("5285bd8a8154c4747b705b51"), "item_code": "I003", "категория": [ «Мальчик», «Девочка» ], "описание" : [ { «возрастная группа»: «3-5», "аромат": "ананас", "цена": 5 }, { "возрастная группа": "6-9", "аромат": "манго", "цена": 6 }, { «возрастная группа»: «10-13», "аромат": "ваниль", "цена": 5 } ] }
Пример - 2 оператора оценочного запроса MongoDB - $ elemMatch
Если мы хотим выбрать все документы из коллекции "table1", которые удовлетворяют условиям в выражении $ elemMatch в описании массива -
Возрастная группа должна быть в пределах "10-13"
Цена должна быть больше или равна 7
можно использовать следующую команду mongodb:
>db.table1.find( { "description": { $elemMatch: { "agegroup" : "10-13","price":{$gte:7}}}}).pretty();
Примечание. Метод find () отображает документы в неструктурированном формате, но для отображения результатов в отформатированном виде можно использовать метод pretty ().
Выход:
{ "_id": ObjectId ("5285bd678154c4747b705b4f"), "item_code": "I001", "категория": [ «Мальчик», «Девочка» ], "описание" : [ { «возрастная группа»: «3-5», "аромат": "шоколад", "цена": 5 }, { "возрастная группа": "6-9", "аромат": "клубника", "цена": 6 }, { «возрастная группа»: «10-13», "аромат": "манго", "цена": 7 } ] }
Новый контент: Composer: менеджер зависимостей для PHP , R программирования