2013-03-11 55 views
0

大家好我有一個文件的結構類似:獲得通過特定的按鍵有序排列在MongoDB中

{ 
    name : abc 
    message: 
    [{ 
     id: 4, 
     status : 0, 
     content : "abc" 
    }, 
    { 
     id: 2, 
     status : 1, 
     content : "abc" 
    }, 
    { 
     id: 1, 
     status : 1, 
     content : "abc" 
    } 
    ] 
} 

我怎樣才能獲得通過ID鍵和狀態= 1 我的意思是

排序消息陣列
{ 
    id: 1, 
    status : 1, 
    content : "abc" 
}, 
{ 
    id: 2, 
    status : 1, 
    content : "abc" 
}, 

非常感謝!

回答

1

這個在mongo shell的解決方案,應該爲你工作。但是從Mongo 2.1開始支持聚合框架。 http://docs.mongodb.org/manual/applications/aggregation/

db.yourcollection.aggregate([{$unwind:"$message"},{$match:{"message.status":1}},{$project:{_id:0,message:1}},{$sort:{"message.id":1}}]) 

由於您的留言關鍵是你必須先使用$開卷操作,然後使用$匹配運算符的數組。

默認情況下,mongo將顯示文檔的_id。因此,如果您不想顯示_id,在匹配相關項後,您可以使用$ project運算符

如果您不希望顯示名稱鍵,則不要指定名稱鍵查詢的項目部分。默認情況下,mongo只會顯示值爲1的鍵。如果沒有提及鍵,它將不會顯示它。

然後你使用$ sort運算符,1爲asecnding,-1爲降序。

+0

非常感謝你安! – 2013-03-11 08:15:12

+0

@ tunghk_54如果答案適合你,你可以標記它! :) – ann 2013-03-11 16:20:35