mongoDB c#查询以返回按多个字段分组的文档的最新版本
我有以下收藏:mongoDB c#查询以返回按多个字段分组的文档的最新版本,c#,mongodb,mongodb-query,mongodb-.net-driver,C#,Mongodb,Mongodb Query,Mongodb .net Driver,我有以下收藏: { "name": "name 1", "type": 1, description: "desc 1", "version": 1} { "name": "name 1", "type": 1, description: "desc 1 updated","version": 2} { "name": "name 2", "type": 1, description: "desc 2", "version": 1} { "name": "name 2", "type": 1,
{ "name": "name 1", "type": 1, description: "desc 1", "version": 1}
{ "name": "name 1", "type": 1, description: "desc 1 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2", "version": 1}
{ "name": "name 2", "type": 1, description: "desc 2 updated","version": 2}
每次需要添加具有相同“名称”和“类型”的新项目时,将创建一个新版本。例如,如果我需要添加:
{ "name": "name 2", "type": 1, description: "desc 2 updated again" }
然后,我更新的收藏将如下所示:
{ "name": "name 1", "type": 1, description: "desc 1", "version": 1}
{ "name": "name 1", "type": 1, description: "desc 1 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2", "version": 1}
{ "name": "name 2", "type": 1, description: "desc 2 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2 updated again","version": 3}
我想要实现一个查询,返回元素的最新版本,除非指定了特定版本
因此,默认情况下,查询应返回:
{ "name": "name 1", "type": 1, description: "desc 1 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2 updated again","version": 3}
{ "name": "name 1", "type": 1, description: "desc 1 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2 updated","version": 2}
或者如果我指定了一个版本,例如2,那么它应该返回:
{ "name": "name 1", "type": 1, description: "desc 1 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2 updated again","version": 3}
{ "name": "name 1", "type": 1, description: "desc 1 updated","version": 2}
{ "name": "name 2", "type": 1, description: "desc 2 updated","version": 2}
到目前为止,我已经达到了可以将计数按一个字段分组的程度:
_mongoDB.Collection.Aggregate()
.Match(filter)
.Group(new BsonDocument
{
{ "_id", "$name"},
{ "count", new BsonDocument("$sum", 1)}
});
到目前为止,我使用。构建了过滤器。您尝试了哪些查询?这与此处讨论的top-N分组要求非常相似: