Mongodb 如何按最新版本获取文档列表,其中版本是一个字段?
我是MongoDB新手,在我的项目中,我正在保存特定文档的任何更改,创建一个新文档,其中包含更改和版本字段 例如:Mongodb 如何按最新版本获取文档列表,其中版本是一个字段?,mongodb,Mongodb,我是MongoDB新手,在我的项目中,我正在保存特定文档的任何更改,创建一个新文档,其中包含更改和版本字段 例如: {_id:"X", number : "1", firstname : "John", lastname : "Sand", version : "1"} {_id:"Y", number : "1", firstname : "John", lastname : "Snow", version : "2"} {_id:"Z", number : "2", firstname :
{_id:"X", number : "1", firstname : "John", lastname : "Sand", version : "1"}
{_id:"Y", number : "1", firstname : "John", lastname : "Snow", version : "2"}
{_id:"Z", number : "2", firstname : "Cersei", lastname : "Lannister", version: "1"}
db.getCollection('collection_name').aggregate([
{
$sort: {'version': -1}
},
{
$group: {
_id: "$number",
original_id: {$first: "$_id"},
firstname: {$first: "$firstname"},
lastname: {$first: "$lastname"},
version: {$first: "$version"},
}
},
{
$project: {
_id: "$original_id",
number: "$_id",
firstname: 1,
lastname: 1,
version: 1
}
}
])
当我必须显示数据时,我应该得到由字段“number”区分的文档的最新版本
预期的结果是:
{_id:"Y", number : "1", firstname : "John", lastname : "Snow", version : "2"}
{_id:"Z", number : "2", firstname : "Cersei", lastname : "Lannister", version: "1"}
有没有一种方法可以通过一个查询来实现这一点?
我正在寻找聚合,但是主题非常分散。如果
number
元素是实体标识符,那么可以使用聚合
首先,您需要按版本
值创建文档
然后,您需要按编号值创建文档,并从组中获取文档的值
最后,您需要格式化数据输出
例如:
{_id:"X", number : "1", firstname : "John", lastname : "Sand", version : "1"}
{_id:"Y", number : "1", firstname : "John", lastname : "Snow", version : "2"}
{_id:"Z", number : "2", firstname : "Cersei", lastname : "Lannister", version: "1"}
db.getCollection('collection_name').aggregate([
{
$sort: {'version': -1}
},
{
$group: {
_id: "$number",
original_id: {$first: "$_id"},
firstname: {$first: "$firstname"},
lastname: {$first: "$lastname"},
version: {$first: "$version"},
}
},
{
$project: {
_id: "$original_id",
number: "$_id",
firstname: 1,
lastname: 1,
version: 1
}
}
])
好的非常感谢。