2014-03-31 88 views
0

我有一個集合:排序字段

 { 
"_id" : ObjectId("5338ec2a5b5b71242a1c911c"), 
"people" : [ 
    { 
     "name" : "Vasya" 
    }, 
    { 
     "age" : "30" 
    }, 
    { 
     "weight" : "80" 
    } 
], 
"animals" : [ 
    { 
     "dog" : "Sharick" 
    }, 
    { 
     "cat" : "Barsik" 
    }, 
    { 
     "bird" : "parrot" 
    } 
]},{ 
"_id" : ObjectId("5338ec7f5b5b71242a1c911d"), 
"people" : [ 
    { 
     "name" : "Max" 
    }, 
    { 
     "age" : "32" 
    }, 
    { 
     "weight" : "78" 
    } 
], 
"animals" : [ 
    { 
     "dog" : "Borbos" 
    }, 
    { 
     "cat" : "Murka" 
    }, 
    { 
     "bird" : "Eagle" 
    } 
]} 

然後合併兩個數組 「人」 和 「動物」

db.tmp.aggregate({$project:{"union":{$setUnion:["$people","$animals"]}}}) 

的問題

如何使每個記錄數組的字段「結果」爲以單一順序顯示,而不是隨機顯示? 那就是:

回答

0

希望我能找到的報價(如果我可以,我將它添加),但它主要來自MongoDB中的CTO和實質上是(原文如此)「設置的是認爲,責令」 。從數學的角度來看非常多,是真的。

所以,你已經偶然發現了當前(截至撰寫)2.6版本候選系列中的一個新特性。但喜歡它的$ addToSet副本,由此產生的集合從$ setUnion將不是以任何方式排序。

要做到這一點,您需要使用$ push再次$ unwind和$ sort然後$ group,就像您總是使用$ addToSet一樣。當然,你需要一些公用密鑰才能對此進行排序,而不是你的數據。

更新:這裏是quotehere is another

+0

謝謝尼爾,也許以後會不僅僅是一個簡單的方法。 – timkit

+0

@timkit閱讀標記爲**的JIRA問題將無法解決**。對他們的評論來自CTO。這絕不會發生。 –