这是我的数据:
{
"__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}})
结果不是我想要的下降。
答案 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,我相信您会找到一种合适的方式来对评论进行排序。