所有对象我有对象的MongoDB中的集合,它看起来像这样集团使用聚合框架
{ "event_type": "event1", "created_at": some_date, ...more_fields... },
{ "event_type": "event2", "created_at": some_date, ...other_fields... },
{ "event_type": "event1", "created_at": some_date, ...more_fields... }
现在我想有一些领域分组的所有领域上面的数据(这可能不会出现在所有对象)并按最高的created_at日期排序。我试图做到这一点使用聚合框架用下面的查询:
collection.aggregate([
{ "$group" => {
:_id => "$somefield",
:last_time => { "$max" => "$created_at" },
:events => { "$push" => { ... } }
}
},
{ "$match" => { "_id" => { "$ne" => nil } } },
{ "$sort" => { "last_time" => -1 } }
])
我面对如果我把一些具体领域是关系到线
:events => { "$push" => { ... } }
的问题,那么它的工作原理,但我不知道集合包含哪些确切的字段。反倒是我想整个对象返回是这样的:
{
"event_type": "event1", "last_time": some_date, "events": [
{ "event_type": "event1", "created_at": some_date, ...more_fields... },
{ "event_type": "event1", "created_at": some_date, ...more_fields... },
...
]
}
这会工作,但我宁愿不必改变数据的形状。我最终通过一个简单的组呼和在客户端进行排序完成。 – derfred