2015-02-11 54 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