Mongodb如何使用findOne对嵌套进行排序

时间:2013-12-19 12:46:54

标签: node.js mongodb mongoose

这是我的数据:

{
    "__v" : 25,
    "_id" : ObjectId("52aadd781a69bfb002000003"),
    "comments" : [
            {
                    "user" : ObjectId("52812042433e5cc012000002"),
                    "_id" : ObjectId("52b2d134e5118e880a00000e"),
                    "created" : ISODate("2013-12-19T10:57:56.908Z"),
                    "comment" : "1"
            },
            {
                    "user" : ObjectId("52812042433e5cc012000002"),
                    "_id" : ObjectId("52b2d151e5118e880a00000f"),
                    "created" : ISODate("2013-12-19T10:58:25.138Z"),
                    "comment" : "2"
            }
    ]
    }

我的代码与findOne:

 db.products.findOne({},null,{sort:{'comments._id':-1}})

结果不是我想要的下降。

1 个答案:

答案 0 :(得分:1)

sort仅对文档进行排序,而不是对文档中的数据进行排序。

您可以findOne然后在您的文档中

doc.comments.sort(function (a, b) {
    var x = a._id;
    var y = b._id;
    // factor -1 because you want them sorted DESC
    return -1 * ((x < y) ? -1 : ((x > y) ? 1 : 0));
});

如果您的客户端不是JavaScript,我相信您会找到一种合适的方式来对评论进行排序。