2014-07-23 1 views
0

커서가 고정되어있어 .Find() 다음에 .setSkip()을 수행 할 수 없다고 컴파일러에서 알려줍니다. 나는 새로운 커서를 만들 수 있어야한다는 것을 이해하지만, .find() 다음에 커서가 멈추는 이유는 무엇입니까? 커서를 올려 놓고 질의를 할 수 없다는 것은 이상한 것 같습니다.몽고 커서가 "정지"되어서 수행 할 수 없습니다 .setskip()

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 

답변

1

FindSetSkip를 사용에는 문제가 없습니다. 다음은 작동 예제입니다.

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) 
+1

감사 인사로 답변을 수락합니다. 그것은 내가 기대할 수있는 것을 확증합니다. 내 코드는 이전 버전의 드라이버를 사용하고 있기 때문에 이런 방식으로 작동하지 않습니다. 그건 내 문제 다. .SetSkip()의 동작을 커서를 고정시키지 않는 작업으로 확인했습니다. 감사. – goldfinger