Два способа сделать это:
1) если вы уже знаете, что вас интересует только первое название продукта, появляющееся в «association_chain», то это лучше:
db.items.find("association_chain.0.name":"something")
Обратите внимание, что возвращаются не все элементы, в которых упоминается нужный продукт, а только те, в которых он упоминается в первой позиции массива «association_chain».
Если вы хотите это сделать, вам понадобится индекс:
db.items.ensureIndex({"association_chain.0.name":1},{background:1})
2) если вы ищете конкретный товар, но не уверены, в какой позиции ассоциации_цепочки он появляется, то сделайте так:
С оболочкой MongoDB вы можете получить доступ к любому хеш-ключу внутри вложенной структуры с помощью '.' точечный оператор! Обратите внимание, что это не зависит от того, насколько глубоко этот ключ вложен в запись (разве это не круто?)
Вы можете найти встроенный массив хэшей следующим образом:
db.items.find("association_chain.name":"something")
Это возвращает все записи в коллекции, которые содержат желаемый продукт, упомянутый где-либо в массиве ассоциаций.
Если вы хотите сделать это, вы должны убедиться, что у вас есть индекс:
db.items.ensureIndex({"association_chain.name":1},{background: 1})
См. «Точечная нотация» на этой странице: http://docs.mongodb.org/manual/core/document/
person
Tilo
schedule
08.04.2013