2013-12-19 185 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