У меня есть документ MongoDB, который выглядит примерно так:
{
"_id": 000000000001,
"sample": [
{
"_id": {
"$oid": "12345678910"
},
"Phone": 5555555555,
"LastName": "Musk",
"FirstName": "Elon",
"responses": {
"question1": "hello",
"question2": "world"
}
},
{
"_id": {
"$oid": "12345678911"
},
"Phone": "1111111111",
"LastName": "Jobs",
"FirstName": "Steve",
"responses": {
"question1": "goodbye",
"question2": "world"
}
}
]
}
Я хочу получить $sum
всех людей, которые дали ответ hello
на question1
, и всех людей, которые дали ответ world
на question2
.
Например. Я хочу, чтобы ответ выглядел примерно так:
{ 'question1': 1, 'question2': 2 }
Мой запрос выглядит так, но он не работает. Это только возвращает 0
для любой заданной суммы, когда я знаю, что это не так.
db.collection(collection).aggregate([
{ $match : { } },
{ $group: {
_id: "responses",
"question1": { $sum: { $cond: [ { $eq: [ "$sample.responses.question1", "hello"] }, 1, 0 ] } },
"question2": { $sum: { $cond: [ { $eq: [ "$sample.responses.question2", "world"] }, 1, 0 ] } }
}
}
])
Кто-нибудь может мне помочь?