mongodb - Mongo 组并推送 : pushing all fields

有没有一种简单的方法可以“$push”文档的所有字段? 例如:

假设我有一本 Mongo 藏书:

{author: "tolstoy", title:"war & peace", price:100, pages:800}
{author: "tolstoy", title:"Ivan Ilyich", price:50,  pages:100}

我想按作者对它们进行分组 - 对于每个作者,列出他的整个书籍对象:

{ author: "tolstoy",
  books: [
     {author: "tolstoy", title:"war & peace", price:100, pages:800}
     {author: "tolstoy", title:"Ivan Ilyich", price:50,  pages:100}
  ]
}

我可以通过显式推送所有字段来实现这一点:

{$group: {
     _id: "$author",
     books:{$push: {author:"$author", title:"$title", price:"$price", pages:"$pages"}},
}}

但是有没有捷径,比如:

// Fictional syntax...
{$group: {
    _id: "$author",
    books:{$push: "$.*"},
}}

最佳答案

你可以使用 $$ROOT

{ $group : {
            _id : "$author",
            books: { $push : "$$ROOT" }
        }}

在这里找到:how to use mongodb aggregate and retrieve entire documents

https://stackoverflow.com/questions/22150205/

相关文章:

mongodb - 在现有的 mongodb 中恢复单个集合

bash - 设置 Mongodb 文件夹的读/写权限

python - 使用 MongoDB ( Python ) 将新属性插入文档

mongodb - 如何查找具有相同字段的mongo文档

node.js - Mongoose 嵌套对象数组中的唯一值

mongodb - 选择字段不存在、为空或为假的 MongoDB 文档?

javascript - mongodb打印没有空格的json,即不漂亮的json

java - java - 如何使用java api查询 “like”的mongodb?

mongodb - 如何检查 mongo db 是否在 Mac 上运行?

arrays - Mongoose save() 不更新数据库文档中数组中的值