1

次のテーブル構造があります。

レンタル:

{
    '_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 つの配列にしたいので、うまくいきません。

4

1 に答える 1