次のテーブル構造があります。
レンタル:
{
'_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'}
}
]},
しかし、レンタル情報が多数の異なるセットにあり、すべてのレンタルをユーザーごとに 1 つの配列にしたいので、うまくいきません。