我正在嘗試使用MongoDB C#驅動程序編寫一個oplog觀察程序,該驅動程序類似於在Java中使用的一個Here。MongoDB C#驅動程序在oplog.rs上的可拖動光標
到目前爲止,我已經成功地寫:
public static void Read()
{
const string connectionString = "mongodb://127.0.0.1:27017,127.0.0.1:27018/?replicaSet=rs0";
MongoClient mongoClient = new MongoClient(connectionString);
MongoDatabase local = mongoClient.GetServer().GetDatabase("local");
MongoCollection opLog = local.GetCollection("oplog.$main");
BsonValue lastId = BsonMinKey.Value;
while (true)
{
var query = Query.GT("_id", lastId);
var cursor = opLog.FindAs<BsonDocument>(query)
.SetFlags(
QueryFlags.AwaitData |
QueryFlags.TailableCursor |
QueryFlags.NoCursorTimeout)
.SetSortOrder(SortBy.Ascending("$natural"));
using (var enumerator = (MongoCursorEnumerator<BsonDocument>)cursor.GetEnumerator())
{
while (true)
{
// I get a "tailable cursor requested on non capped collection" Exception
if (enumerator.MoveNext())
{
var document = enumerator.Current;
lastId = document["_id"];
}
else
{
if (enumerator.IsDead)
{
break;
}
if (!enumerator.IsServerAwaitCapable)
{
Thread.Sleep(TimeSpan.FromMilliseconds(100));
}
}
}
}
}
}
我已經在服務器上創建的OPLOG併成功地詢問其使用說明書蒙戈命令行發現here,但我不能找出原因這個例外說明它沒有上限。
我已經看了看[本C#實現(https://groups.google.com/forum/?fromgroups=#!searchin/ mongodb-user/tailable $ 20cursor/mongodb-user/vpuXq-FMfFQ/UT6Z3O2DVj8J),但它創建了一個新的capped集合,並且我對oplog.rs更感興趣。 – mematei 2013-03-06 20:11:50