我有一张时间表。我想获取每个商店的最新计划时间表的整个文档。我对选择此类文档的过程的假设是:
但是,我在网上发现的多个尝试的汇总函数都失败了。
例如,此代码返回具有相同 DIVISION 和 STORE_ID 的多个值。我认为这是因为它是按 SCHEDULED_INSTALL_DATE
分组的[
{ $match : {DIVISION: divisionId, STORE_ID:{$in :storeIds}} },
{ $sort : { SCHEDULED_INSTALL_DATE : -1 } },
{ $group: {
_id : "$_id",
STORE_ID: {$first:"$STORE_ID"},
DIVISION: {$first:"$DIVISION"},
SCHEDULED_INSTALL_DATE : {$first:"$SCHEDULED_INSTALL_DATE "},
}},
]
该元素不起作用,因为未对推送的文档数组进行排序,因此选择第0个元素不是正确的元素
[
{ $match : {DIVISION: divisionId, STORE_ID:{$in :storeIds}} },
{ $sort : { SCHEDULED_INSTALL_DATE : -1 } },
{ $group: {
_id : "$_id",
STORE_ID: {$first:"$STORE_ID"},
DIVISION: {$first:"$DIVISION"},
schedules: { $push : "$$ROOT" }
}},
{ $replaceRoot: { newRoot: { $arrayElemAt: ["$schedules", 0] } },
]
如何通过单个MongoDB查询实现我的目标?
{
"_id":"abc123",
"DIVISION":"1",
"SCHEDULED_INSTALL_DATE":"2018-08-03T07:00:00.000Z",
"INSTALL_TYPE":"configInstall",
"STORE_ID":"2",
"VPOS_VERSION":"1.1",
"STATUS":"0"
}