MongoDB: количество совпадающих элементов вложенного массива - PullRequest
3 голосов
/ 02 июля 2010

У меня есть простой родительский дочерний объект, хранящийся как документ в MongoDB. Что-то упрощенное, как Order / OrderItems. (Order имеет массив OrderItem)

То, что я хотел бы сделать, это запрос количества элементов заказа, где они соответствуют набору критериев.

Пример: В заказе "999" узнайте, сколько позиций заказа было количество 3.

db.collection.find( {OrderId:999, "OrderItems.QuantityOrdered":3} ).count();

Способ работы этого запроса заключается в том, что он возвращает «1», поскольку, если он соответствует хотя бы одному OrderItem внутри массива, он возвращает количество совпадающих заказов.

Как узнать, сколько "OrderItems" соответствует?:

1 Ответ

3 голосов
/ 03 июля 2010

Нет прямого способа вернуть счет такого рода со встроенным документом. При таком подсчете ad-hoc лучше всего вернуть документ и выполнить подсчет из приложения.

Если вы хотите выполнить этот вид подсчета для большого количества заказов, вы можете использовать map-redund, который выведет результаты в новую коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...