Dans la mesure où MongoDB fournit $group
dans le pipeline d'agrégation, il renvoie une liste de documents, où _id
conserve une valeur de regroupement "distincte" et l'autre champ conserve un tableau de documents, regroupés selon une condition donnée.
Ce que je veux, c'est renvoyer un document unique dont les propriétés sont les résultats de l'agrégation.
Exemple de collecte :
{author: "Author1", title: "Title1"}
{author: "Author2", title: "Title2"}
{author: "Author2", title: "Title3"}
L'agrégation
db.getCollection('books').aggregate([
{"$group": {
_id: "$author",
books: { $push: "$$ROOT" }
}
}
])
Cela me donne le résultat suivant :
{_id: 'Author1', books: [{author: "Author1", title: "Title1"}]},
{_id: 'Author2', books: [{author: "Author2", title: "Title2"}, {author: "Author2", title: "Title3"}]}
Mais j'aimerais obtenir les résultats sous la forme d'un seul objet, comme ceci :
{
Author1: [
{author: "Author1", title: "Title1"}
],
Author2: [
{author: "Author2", title: "Title2"},
{author: "Author2", title: "Title3"}
]
}
En termes simples, je veux utiliser _id
en tant que nouveau champ dans le document résultant, et la propriété appropriée $group
pour des valeurs spécifiques _id
doit être la valeur de la nouvelle variable.
Si quelqu'un est confronté à une telle question, veuillez l'aider ou lui donner des indices sur la façon de la résoudre. Merci d'avance.