c# - MongoDb - 升级 mongodb 后需要游标选项
问题描述
由于我们被迫升级我们的 mongo 安装,我们在一些聚合函数调用期间收到错误:
MongoDB.Driver.MongoCommandException:“命令‘聚合’失败:‘游标’选项是必需的,除了带有解释参数的聚合(响应:{“ok”:0.0,“errmsg”:“‘游标’选项是必需的, 除了带有解释参数的聚合", "code" : 9, "codeName" : "FailedToParse" })"
BsonArray arr = BsonSerializer.Deserialize<BsonArray>("[{ \"$match\" : { \"Param1\" : \"VAL\" } }, { \"$unwind\" : \"$Entries\" }, { \"$match\" : { \"PARAM\" : \"VALUE\" } }]");
var pipeline = arr.Select(x => x.AsBsonDocument).ToList();
// AggregateArgs aArgs = new AggregateArgs { Pipeline = bsonList };
var cursor = collection.Aggregate(pipeline).ResultDocuments;
我已经想通了,我们必须手动将光标配置添加到 BsonDocument - 但我们无法弄清楚应该如何配置查询。
是否有任何解决此异常的方法(不更改驱动程序)?
解决方案
试一试:
var cursor = collection.Aggregate<BsonDocument>(pipeline);
var results = cursor.ToList(); //just get a list of documents and be done with it
while (cursor.MoveNext()) // or iterate over cursor
{
foreach (var doc in cursor.Current.ToArray())
{
//access your documents here
}
}
推荐阅读
- react-native - Expo CLI 和 React Native CLI 有什么区别?
- java-8 - 使用 rxjava 1 的并行调用
- c++ - c++ std::getline / std::sort 没有按预期工作
- spring - Spring Boot 安全性:请求的 url 创建了不需要的 redis 会话
- php - 'id_rsa_bblc' 的权限 0644 太开放
- amazon-dynamodb - on dynamoose update ValidationException: 键上的条件数无效
- sql - 出版到期日存档记录
- python - tensorflow.python.framework.errors_impl.UnknownError:重命名失败:输入/输出错误
- c# - 如何在不更改 C# 中的密钥的情况下将 RSAParameters 密钥导入和导出到文件
- apache-spark - 可以使用 Sqoop 在 IMPORT 上执行连接吗?