有没有办法将$ addToSet的结果作为排序数组?
我试图扩展管道和$展开数组,对它进行排序并再次分组,但结果仍然没有排序 .
数组非常大,我试图避免在应用程序中对它们进行排序 .
Document Example :
{
"_id" : ObjectId("52a84825cc8391ab188b4567"),
"id" : 129624
"message" : "Sample",
"date" : "12-09-2013,17:34:34",
"dt" : ISODate("2013-12-09T17:34:34.000Z"),
}
查询:
db.uEvents.aggregate(
[
{$match : {dt : {$gte : new Date(2014,01,01) , $lt : new Date(2015,01,17)}}}
,{$sort : {dt : 1}}
, {$group : {
_id : {
id : "$id"
, year : {'$year' : "$dt"}
, month : {'$month' : "$dt"}
, day : {'$dayOfMonth' : "$dt"}
}
,dt : {$addToSet : "$dt"}
}}
]
);
1 回答
是的,这是可能的,但采取不同的方式 . 我只是为此提供我自己的数据,但你会得到这个概念 .
我的样本:
我将在这个问题上担任首席技术官,并声明 Sets 被认为是 unordered .
因此,如果你想要一个有序的结果,你必须按照这样的阶段按摩
然后做任何事情 . 但现在您的数组已排序 .