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 :

我是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"}
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
        }
    }
])

好的非常感谢。