【问题标题】:Aggregate with Sorting a Date not working聚合与排序日期不起作用
【发布时间】:2016-08-15 09:08:54
【问题描述】:

这是关于 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}) ;

});

谢谢,

【问题讨论】:

标签: node.js mongodb sorting mongoose aggregation-framework


【解决方案1】:

我在这里看到两个问题。

  1. 您的匹配项与您的数据结构不匹配。您应该针对message.user 而不是users 进行测试:

    { "$match": { "messages.user": {'$in':[objId]}} }
    
  2. 您正在使用将匹配 _id 字段而不是 user 字段的 ObjectId 进行测试。您应该针对570d2308ba5bc6842242e881 进行测试,而不是5715acfcf1dbdc7c0ae94379

如果您想针对_id 进行测试,那么您的匹配将如下所示:

{ "$match": { "_id": {'$in':[objId]}} }

【讨论】:

  • 抱歉,我更新了我的收藏数据。如果您知道发生了什么,请告诉我。
猜你喜欢
  • 2015-07-27
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多