Используя пример, найденный по адресу:
https://docs.mongodb.com/manual/tutorial/query-array-of-documents/
Наличие:
db.inventory.insertMany( [
{ item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
{ item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
и позже запрос:
db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
возвращает набор документов со складом = А и кол-во = 5 в поддокументе "на складе"
Но запрос только для тех, которые содержат {склад: "A"}, не возвращает никакого результата
db.inventory.find( { "instock": { warehouse: "A" } } )
Теперь, изменив это на:
db.inventory.find( { "instock.warehouse": "A" })
работает
Разве они не должны быть одинаковыми? Что-нибудь о семантике?
С другой стороны, как правильно найти значение поля, которое находится в списке вложенных документов внутри другого списка вложенных документов (встроенных или встроенных)
Спасибо !