我有以下表结构:
租金:
{
'_id' : '1',
'user_id' : 1,
'item_id' : 6,
'name' : "First rental",
}
{
'_id' : '2',
'user_id' : 2,
'item_id' : 7,
'name' : "Second rental",
}
{
'_id' : '3',
'user_id' : 2,
'item_id' : 8,
'name' : "Third rental",
}
我想要一个按用户分组的租赁列表,如下所示:
{
'user' : '1',
'rental_count': 1,
'rentals' : [
{
'_id' : '1',
'item_id' : 6,
'name' : "First rental"
}
]
'user' : '2',
'rental_count: 2',
'rentals' : [
{
'_id' : '2',
'item_id' : 7,
'name' : "Second rental"
},
{
'_id' : '3',
'item_id' : 8,
'name' : "Third rental"
},
]
}
你怎么能用 mongodb 做到这一点(如果需要,我可以使用聚合框架)。
我试过这样的事情:
self.collection.aggregate([
{'$group' => {_id: {user_id: '$user_id'},
rental_items: {'$addToSet' => '$item_id'}
rental_ids: {'$addToSet' => '$_id'}
}
]},
但它永远不会起作用,因为我有很多不同集合中的租赁信息,并且我希望每个用户的所有租赁都在一个数组中。