gpt4 book ai didi

c# - 如何使用 MongoDB C# Driver Aggregate 获取 2 个字段上具有特定值的最新项目?

转载 作者:可可西里 更新时间:2023-11-01 09:34:58 27 4
gpt4 key购买 nike

感谢您的光临:)

基本上,我有一个 MongoDB,其中包含具有以下属性的文档集合:

String group;
String key;
String value;
DateTime timestamp;

我想获取所有最新文档的列表,这些文档具有唯一(不同)的组和键组合。

存在组和键相同但值不同的文档;我只想要具有最新时间戳的那个。

如果我有:

文档 A:组 = 2; key =东西;值 = 123;时间戳 = 20160621;

文档 B:组 = 2; key =东西;值 = 888;时间戳 = 20160622;

我只想在查询中检索文档 B(值为 888)。

这是我到目前为止得到的:

var aggregate = collection.Aggregate()
.Match(new BsonDocument { { "deviceid", deviceid } })
.Sort( new BsonDocument { { "timestamp", -1} })
.Group(new BsonDocument { { "groupkey", "$group" }, { "latestvalue", "$first.value" } });

然而,这会导致以下异常:“命令聚合失败:组聚合字段‘groupkey’必须定义为对象内的表达式”

1) 关于如何使用 Aggregate 做我想做的事情的任何提示? (基本上,按时间戳降序排序并根据 2 个字段区分)

2) 关于如何将聚合转换为列表或类似内容的任何提示? (我需要对所有结果使用 linq 来查找具有特定组和键的文档的值)

最佳答案

当使用聚合框架时,作为训练的一部分,我建议在 monogo shell/robomongo 中执行相同的操作以查看正确的语法。

请在下面找到您的查询的固定语法

var aggregate = collection.Aggregate()
.Match(x=>x.key== "k10")
.SortByDescending(x=>x.timestamp)
.Group( BsonDocument.Parse("{ '_id':'$group', 'latestvalue':{$first:'$value'} }")).ToList();

关于c# - 如何使用 MongoDB C# Driver Aggregate 获取 2 个字段上具有特定值的最新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com