2015-02-11 55 views
0

對Mongodb來說很新,我試圖用Mongoose來構造一個查詢來獲得想要的結果,如果可能的話。任何方式按列分組Mongodb查詢結果?

測試數據:

{ id: 1, display_time: '01:00', name: 'test1' }, 
{ id: 2, display_time: '03:00', name: 'test2' }, 
{ id: 3, display_time: '01:00', name: 'test3' }, 
{ id: 4, display_time: '04:00', name: 'test4' }, 
{ id: 5, display_time: '01:00', name: 'test5' } 

期望的結果:

{ 
    "01:00": [ 
    { id: 1, display_time: '01:00', name: 'test1' }, 
    { id: 3, display_time: '01:00', name: 'test3' }, 
    { id: 5, display_time: '01:00', name: 'test5' } 
    ], 
    "03:00": [ 
    { id: 2, display_time: '03:00', name: 'test2' } 
    ], 
    "04:00": [ 
    { id: 4, display_time: '04:00', name: 'test4' } 
    ], 
} 

基本上這組基礎上,display_time領域的文件,並返回該格式。 Mongo有可能嗎?

回答

1

你可以嘗試財產以後這樣的:

db.collection.aggregate(
    [ 
    { $group : { _id : "$display_time", test: { $push: "$$ROOT" } } } 
    ] 
) 

{ 
    "_id" : "01:00", 
    "test" : 
    [ 
     { id: 1, display_time: '01:00', name: 'test1' }, 
     { id: 3, display_time: '01:00', name: 'test3' } 
    ] 
} 

{ 
    "_id" : "04:00", 
    "test" : 
    [ 
     { id: 4, display_time: '04:00', name: 'test4' } 
    ] 
} 

對於moar信息http://docs.mongodb.org/manual/reference/operator/aggregation/group/

+0

謝謝你,這個工程。有沒有什麼辦法可以根據其中一個對象的鍵來對'test'數組進行排序?例如:每個'test'數組都按'name'按降序排序?我查看了文檔,但我不知道我是否理解。 – Brandon 2015-02-11 17:21:21

+1

@Brandon,請參閱上面的修改。我添加了解決方案來排序內部數組。 – 2015-02-11 19:28:49

+0

感謝@HowardLee,但我沒有看到你的編輯? – Brandon 2015-02-11 20:14:58