Я изучаю mongodb, и я немного застрял в написании запроса.mongodb-aggregate, чтобы получить счет.
У меня есть следующие коллекции:
{
_id : 1,
House: A,
inventory: [
{
place: Kitchen,
item: fridge
},
{
place: Kitchen,
item: stove
},
{
place: Kitchen,
item: TV
},
{
place: Bedroom,
item: bed
},
{
place: Bedroom,
item: TV
}
]
},
{
_id : 2,
House: B,
inventory: [
{
....
}
]
},
Как бы я написать запрос, возвращающий значение счетчика «места» и «пунктов»? Таким образом, выход должен быть таким:
{id: Kitchen, PlaceCount: 3, itemCount: 3} - 3 кухни, 3 предмета (холодильник, плита, телевизор)
{id: Спальня, PlaceCount: 2, itemCount: 2} - 2 спальни, 2 шт. (Кровать, телевизор)
Мне нужно, чтобы количество телевизоров учитывалось в каждом месте.
Хой и добро пожаловать! Возможно, вы захотите прочитать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), что увеличивает вероятность получения полезного ответа _drastically_. Вы можете найти превосходный эссе [ESR] (https://en.m.wikipedia.org/wiki/Eric_S._Raymond) [Как задавать вопросы Smart Way] (http://catb.org/~esr/ faqs/smart-questions.html) тоже полезно. –
Вы пробовали db.user.aggregate ({$ group: {_id: "$ inventory.place", PlaceCount: {$ sum: 1}, itemCount: {$ sum: 1}}}, {$ match: {} }, {$ sort: {_id: 1}})? –
@AlvaroJoao Я сделал, он производит '{" _id ": [" Кухня "," Кухня "," Кухня "," Спальня "," Спальня "]," PlaceCount ": 1," itemCount ": 1}', который не имеет особого смысла –