У меня есть документы mongodb в следующем формате:
{
"date": "04-10-2018",
"botData": [{
"botId": "botId1",
"date": "04-10-2018",
"weekDay": "Thursday",
"hourOfDayData": {
"09": 24,
"11": 56,
"02": 66
},
"channelData": [{
"channel": "web",
"totalTraffic": 185,
"totalMessagesSent": 357,
"avgMessagesSentPerSession": 1.93,
"averageInteractionTime": 4.34
},
{
"channel": "fb",
"totalTraffic": 32,
"totalMessagesSent": 78,
"avgMessagesSentPerSession": 1.93,
"averageInteractionTime": 2.34
}
]
}, {
"botId": "botId2",
"date": "04-10-2018",
"weekDay": "Thursday",
"hourOfDayData": {
"09": 24,
"11": 56,
"02": 66
},
"channelData": [{
"channel": "web",
"totalTraffic": 185,
"totalMessagesSent": 357,
"avgMessagesSentPerSession": 1.93,
"averageInteractionTime": 4.34
},
{
"channel": "fb",
"totalTraffic": 32,
"totalMessagesSent": 78,
"avgMessagesSentPerSession": 1.93,
"averageInteractionTime": 2.34
}
]
}]}
Я хочу запросить часть документа.Я хочу запрос, который даст мне следующий результат:
{
"botId": "botId1",
"date": "04-10-2018",
"weekDay": "Thursday",
"hourOfDayData": {
"09": 24,
"11": 56,
"02": 66
},
"channelData": [{
"channel": "web",
"totalTraffic": 185,
"totalMessagesSent": 357,
"avgMessagesSentPerSession": 1.93,
"averageInteractionTime": 4.34
},
{
"channel": "fb",
"totalTraffic": 32,
"totalMessagesSent": 78,
"avgMessagesSentPerSession": 1.93,
"averageInteractionTime": 2.34
}
]
}
Это запрос, который я использую сейчас:
db.test.find({botData:{$elemMatch:{botId:'botId1'}}},{"botData":1,_id:0})
Для которого я получаю следующий результат:
{
"botData" : [
{
"botId" : "botId1",
"date" : "04-10-2018",
"weekDay" : "Thursday",
"channelData" : [
{
"channel" : "web",
"totalTraffic" : 185.0,
"totalMessagesSent" : 357.0,
"avgMessagesSentPerSession" : 1.93,
"averageInteractionTime" : 4.34
},
{
"channel" : "fb",
"totalTraffic" : 32.0,
"totalMessagesSent" : 78.0,
"avgMessagesSentPerSession" : 1.93,
"averageInteractionTime" : 2.34
}
]
},
{
"botId" : "botId2",
"channelData" : [
{
"channel" : "web",
"totalTraffic" : 185.0,
"totalMessagesSent" : 357.0,
"avgMessagesSentPerSession" : 1.93,
"averageInteractionTime" : 4.34
},
{
"channel" : "fb",
"totalTraffic" : 32.0,
"totalMessagesSent" : 78.0,
"avgMessagesSentPerSession" : 1.93,
"averageInteractionTime" : 2.34
}
]
}
]
}
Я попробовал функцию проекции mongodb, как вы можете видеть.Но это не сработало, как я хотел.
Может кто-нибудь найти подходящий запрос, чтобы получить желаемый результат?