我是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"}
是否有一种方法可以对一个查询执行此操作? 我正在寻找汇总信息,但是主题非常分散。
答案 0 :(得分:0)
如果number
元素是实体标识符,则可以使用聚合。
首先,您需要使用version
值sort个文档。
然后,您需要使用number
值group个文档,并从组中获取first文档的值。
最后,您需要格式化数据输出。
示例:
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
}
}
])