Mongo groupe et push: les poussant tous les domaines
Est-il un moyen facile de "$" push " tous les champs d'un document?
Par exemple:
Dire que j'ai un Mongo collection de livres:
{author: "tolstoy", title:"war & peace", price:100, pages:800}
{author: "tolstoy", title:"Ivan Ilyich", price:50, pages:100}
J'aimerais les regrouper par l'auteur - pour chaque auteur, la liste de ses ensemble livre d'objets:
{ author: "tolstoy",
books: [
{author: "tolstoy", title:"war & peace", price:100, pages:800}
{author: "tolstoy", title:"Ivan Ilyich", price:50, pages:100}
]
}
Je peux réaliser cette explicitement à pousser tous les domaines:
{$group: {
_id: "$author",
books:{$push: {author:"$author", title:"$title", price:"$price", pages:"$pages"}},
}}
Mais est-il un raccourci, quelque chose dans le genre de:
//Fictional syntax...
{$group: {
_id: "$author",
books:{$push: "$.*"},
}}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser $$ROOT
Trouve ici: comment utiliser mongodb d'agrégation et de récupérer l'ensemble des documents
En fait, vous ne pouvez pas obtenir ce que vous dites à tous, vous avez besoin $détendez-vous
C'est la façon dont vous traitez avec des tableaux dans l'agrégation.
Et ce que vous êtes à la recherche pour de raccourci saisissant tous les champs n'existe pas, encore.
Mais précisément à cause de ce que vous avez à faire, alors vous ne pouvait pas faire de toute façon tant que vous êtes dans un chemin, en remodelant le document.
Si le problème est que vous ne voulez pas écrire explicitement tous les champs (si votre document ont de nombreux domaines et vous avez besoin de tous d'entre eux en suite), vous pouvez également essayer de le faire avec Map-reduce: