如何按最新版本获取文档列表,其中版本是一个字段



我是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 : "Cersei", lastname : "Lannister", version: "1"}

当我必须显示数据时,我应该获得由字段"数字"区分的文档的最新版本

预期结果为:

{_id:"Y", number : "1", firstname : "John", lastname : "Snow", version : "2"}
{_id:"Z", number : "2", firstname : "Cersei", lastname : "Lannister", version: "1"}

有没有一种方法可以用一个查询来做到这一点?我正在寻找聚合,但主题非常分散。

如果number元素是实体标识符,则可以使用聚合。

首先,您需要按version值对文档进行排序。

然后,您需要按number值对文档进行分组,并从组中获取第一个文档的值。

最后,您需要格式化数据输出。

例:

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
        }
    }
])

最新更新