db.TYPE_Join_STEP_COUNTER_GPS.aggregate([
{ $match: { 'Time.ObservationTimestamp': { $gte: ISODate("2019-01-01T00:00:00+00:00"), $lt: ISODate("2019-02-02T00:00:00+00:00") } } },
{
$group: {
_id: { users: "$userAccount.userEmail" },
sensorValue: { $addToSet: "$sensorValue.sensorValue" }
}
},
{
$unwind: "$sensorValue"
},
{
$group: { _id: "$_id", lastdata: {$last: "$sensorValue"} }
}
])
Я получил следующие выходные данные для этого запроса.
/* 1 */
{
"_id" : {
"users" : "test1@gmail.com"
},
"lastdata" : "245"
},
/* 2 */
{
"_id" : {
"users" : "test2@gmail.com"
},
"lastdata" : "135"
}
Что мне нужно - мне нужны последние данные значения датчика для уникальных идентификаторов электронной почты в каждом регионе.Я попытался добавить еще одну группу по условию относительно региона, но это не сработало.Пожалуйста, дайте мне знать, если я что-то упустил.Заранее спасибо.
Сбор образцов :
{
"_id" : ObjectId("5c52f5370ad3076c2398ba83"),
"userAccount" : {
"userId" : "115867679428105538091",
"userEmail" : "test1@gmail.com"
},
"deviceId" : "9312dfc5b63063c7",
"sensorType" : "TYPE_Join_STEP_COUNTER_GPS",
"sensorValue" : {
"sensorValue" : "257",
"regoin" : "Region1"
},
"Time" : {
"ObservationTimestamp" : ISODate("2019-01-30T00:00:00.000+00:00")
}
}
Ожидаемый результат:
/* 1 */
{
"_id" : {
"regoin" : "Region1"
},
users: "Test1@gmail.com" , "lastdata" : "135"
users: "Test2@gmail.com" , "lastdata" : "105"
},
/* 2 */
{
"_id" : {
"regoin" : "Region2"
},
users: "Test1@gmail.com" , "lastdata" : "105"
users: "Test2@gmail.com" , "lastdata" : "100"
},