2013-12-19 181 views
0

这是我的数据嵌套:MongoDB中如何排序使用findOne

{ 
    "__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

在StackOverflow上已经有很多这样的问题了。 http://stackoverflow.com/questions/15318526/mongodb-sorting-documents-by-nested-data – WiredPrairie

+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不,我敢肯定,你找到一个合适的方式来评论排序。

+0

谢谢。有效。 –

+0

不客气!您可以将答案标记为正确和/或有帮助:) – hgoebl