je la structure de tableau suivant:Regroupement tous les autres champs avec MongoDB
Location:
{
'_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",
}
Je voudrais une liste de locations groupées par les utilisateurs comme ceci:
{
'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"
},
]
}
Comment pouvez-vous le faire avec mongodb (je peux utiliser le cadre d'agrégation si nécessaire).
J'ai essayé quelque chose comme ceci:
self.collection.aggregate([
{'$group' => {_id: {user_id: '$user_id'},
rental_items: {'$addToSet' => '$item_id'}
rental_ids: {'$addToSet' => '$_id'}
}
]},
Mais ça ne marchera jamais, parce que j'ai les informations de location dans beaucoup de jeux différents, et je veux toutes les locations dans un tableau unique pour chaque utilisateur.
Peut-être que MapReduce pourrait vous aider ici. – Philipp