Mongo游标“冻结”;所以不能执行.setskip()

本文关键字:执行 不能 setskip 游标 冻结 Mongo | 更新日期: 2023-09-27 18:14:21

编译器告诉我,我不能在。find()之后执行。setskip(),因为光标被冻结了。我知道我可以/应该只是创建一个新的游标,但我的问题是为什么游标冻结后。find()?这似乎很奇怪,我不能进行查询,然后推进光标。

  MongoCursor<BsonDocument> cursor;
  var query = Query.NE("OriginalMessage", "JUNK");   // get all non-junk messages
  cursor = this.untypedcollection.Find(query);
  cursor.SetSkip(20);           // fails at compile - cursor frozen

Mongo游标“冻结”;所以不能执行.setskip()

Find之后使用SetSkip是没有问题的。下面是一个工作示例:

var client = new MongoClient();
var db = client.GetServer().GetDatabase("db");
var collection = db.GetCollection("collection");
var query = Query.NE("OriginalMessage", "JUNK");
var cursor = collection.Find(query).SetSkip(10);

游标仅在开始迭代游标时被冻结。这包括在foreach中使用它,在调试器中展开结果等等。下面是一个应该失败的例子:

// ...
var cursor = collection.Find(query);
var first = cursor.FirstOrDefault();
cursor.SetSkip(10)