这是一个非常类似的问题在stackoverflow但由于某种原因,这是行不通的。我花了很多时间没有成功。聚合与排序日期不起作用
下面是我收集的设置
{
"_id" : ObjectId("5715acfcf1dbdc7c0ae94379"),
"users":[ObjectId("570d2308ba5bc6842242e881"),
ObjectId("570d7e4b369ac0c525e98331")
],
"messages" : [
{
"user" : ObjectId("570d2308ba5bc6842242e881"),
"message" : NumberInt(0),
"readInd" : "N",
"createDate" : ISODate("2016-04-19T03:59:12.587+0000"),
"_id" : ObjectId("5715ad10f1dbdc7c0ae94396")
},
{
"user" : ObjectId("570d2308ba5bc6842242e881"),
"message" : NumberInt(1),
"readInd" : "N",
"createDate" : ISODate("2016-04-19T04:11:10.541+0000"),
"_id" : ObjectId("5715afdef36f23a10ad12348")
},
{
"user" : ObjectId("570d2308ba5bc6842242e881"),
"message" : NumberInt(2),
"readInd" : "N",
"createDate" : ISODate("2016-04-19T04:11:11.756+0000"),
"_id" : ObjectId("5715afdff36f23a10ad12352")
}
]
}
,这里是我的猫鼬
var objId = new ObjectID("5715acfcf1dbdc7c0ae94379");
chatModel.aggregate([
{ "$match": { "users": {'$in':[objId]}} },
{
"$project": {
"messages":1
}
}
,{"$sort": {"messages.createDate": -1} }
],function(err,records) {
if (err) {
return res.json({status: false, errCode: 900, errMsg: err});
}
res.json({status:true,resData:records}) ;
});
感谢代码剪断,
那么究竟什么是*“不工作” *?你期望发生什么? –
[“通过最大数组字段进行排序,升序或降序”]可能重复(http://stackoverflow.com/questions/35374433/sorting-by-maximum-array-field-ascending-or-descending/) –
@NeilLunn :结果按日期排序 – user2596892