【发布时间】:2016-02-24 16:28:44
【问题描述】:
我的代码有一个例外: 要测试可尾光标,请在该程序运行时将文档手动插入到 test.capped 集合中,并验证它们是否已回显到控制台窗口。
public static class Program
{
public static void Main(string[] args)
{
try
{
var server = MongoServer.Create("mongodb://distnatserver/?safe=true");
var database = server["test"];
if (database.CollectionExists("capped"))
{
database.DropCollection("capped");
}
var collectionOptions = CollectionOptions.SetCapped(true).SetMaxDocuments(5);
var commandResult = database.CreateCollection("capped", collectionOptions);
var collection = database["capped"];
BsonValue lastId = BsonMinKey.Value;
while (true)
{
var query = Query.GT("_id", lastId);
var cursor = collection.Find(query)
.SetFlags(QueryFlags.TailableCursor | QueryFlags.AwaitData)
.SetSortOrder("$natural");
using (var enumerator = (MongoCursorEnumerator<BsonDocument>)cursor.GetEnumerator())
{
while (true)
{
if (enumerator.MoveNext())
{
var document = enumerator.Current;
lastId = document["_id"];
ProcessDocument(document);
}
else {
if (enumerator.IsDead)
{
break;
}
if (!enumerator.IsServerAwaitCapable)
{
Thread.Sleep(TimeSpan.FromMilliseconds(100));
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Unhandled exception:");
Console.WriteLine(ex);
}
Console.WriteLine("Press Enter to continue");
Console.ReadLine();
}
private static void ProcessDocument(
BsonDocument document
)
{
Console.WriteLine(document.ToJson());
}
}
未处理的异常: MongoDB.Driver.MongoCommandException:命令“创建”失败:指定大小:当上限为真时(响应:{“ok”:0.0,“errmsg”:“指定大小:当上限为真”,“代码”:14832 })
【问题讨论】: