有没有一种简单的方法来"$ push"文档的所有字段?例如:
说我有一本Mongo书籍集:
{author: "tolstoy", title:"war & peace", price:100, pages:800}
{author: "tolstoy", title:"Ivan Ilyich", price:50, pages:100}
Run Code Online (Sandbox Code Playgroud)
我想按作者对它们进行分组 - 对于每个作者,列出他的整个书籍对象:
{ author: "tolstoy",
books: [
{author: "tolstoy", title:"war & peace", price:100, pages:800}
{author: "tolstoy", title:"Ivan Ilyich", price:50, pages:100}
]
}
Run Code Online (Sandbox Code Playgroud)
我可以通过明确推送所有字段来实现这一点:
{$group: {
_id: "$author",
books:{$push: {author:"$author", title:"$title", price:"$price", pages:"$pages"}},
}}
Run Code Online (Sandbox Code Playgroud)
但是有没有捷径,有以下几点:
// Fictional syntax...
{$group: {
_id: "$author",
books:{$push: "$.*"},
}}
Run Code Online (Sandbox Code Playgroud)
Jur*_*ius 93
你可以使用$$ ROOT
{ $group : {
_id : "$author",
books: { $push : "$$ROOT" }
}}
Run Code Online (Sandbox Code Playgroud)
在这里找到:如何使用mongodb聚合并检索整个文档
实际上,您根本无法实现您所说的内容,您需要$ unwind
db.collection.aggregate([
{$unwind: "$books"},
{$group: {
_id: "$author",
books:{$push: {
author:"$books.author",
title:"$books.title",
price:"$books.price",
pages:"$books.pages"
}},
}}
])
Run Code Online (Sandbox Code Playgroud)
这就是您处理聚合数组的方式。
而你想找什么样的快捷键键入所有的字段不存在,但。
但是特别是由于您必须执行的操作,您将无法按照您的方式进行任何操作,从而改变了文档的形状。
| 归档时间: |
|
| 查看次数: |
28723 次 |
| 最近记录: |