首页 > 解决方案 > 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 - 但我们无法弄清楚应该如何配置查询。

是否有任何解决此异常的方法(不更改驱动程序)?

标签: c#mongodb

解决方案


试一试:

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
    }
}

推荐阅读