如何解决Mongodb 展开数组
{
"id": 1,"name": "a","namespace" : "a","version" : "1.1.1","otherStuff" : ...
(20 more...)
},{
"id": 2,"version" : "2.1.1","otherStuff" : ...
...
},{
"id": 3,"name": "b","otherStuff" : ...
...
}
现在我想聚合它,以便我只获取具有最高版本号的文档,按(名称,命名空间)分组。我想出了以下内容,但是我想在我的 Java 代码中使用它,但我无法像第一步那样将最后一步解包到整个对象中。
[
{$sort: {
"version": 1
}},{$group: {
"_id": {
"name": "$name","namespace": "$namespace"
},"version": { "$last": "$version" },"object": { "$last": "$$ROOT" }
}},{$sort: {
"object.namespace": 1,"object.name":1
}},{$project: {
object:1,_id:0
}}
]
但这给了我:
{
object: [...],object: [...]
}
我要寻找的是第一个示例中的表示形式,我只想选择 id 2 和 3。 我尝试了 $unwrap,但似乎我用错了,因为它产生的结果与我的 $project 阶段相同。
解决方法
您只需要使用 $replaceRoot
使对象在 Root 中作为最后阶段
{
"$replaceRoot": {
"newRoot": "$object"
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。