首先附上几个网址
1.官方文档
2.参考文章
3.副本集搭建
前提和版本对应
安装mongodb后需要开启副本集才能使用此功能
mongosh-1.6.1-win32-x64
mongodb-windows-x86_64-6.0.3-signed.msi
mongodb.driver 2.18.0
代码
[HttpGet]
public void startNow()
{
const string connectionString = "mongodb://127.0.0.1:27018";
var client = new MongoClient(connectionString);
//var server = MongoServer.Create(connectionString);
// 连接到 mongodb_c_demo 数据库
IMongoDatabase mdb = client.GetDatabase("testone");
var collection = mdb.GetCollection<BsonDocument>("test");
var options = new ChangeStreamOptions { FullDocument = ChangeStreamFullDocumentOption.UpdateLookup };
FilterDefinitionBuilder<BsonDocument> builderFilter = Builders<BsonDocument>.Filter;
//约束条件
FilterDefinition<BsonDocument> filter = builderFilter.Eq("name", "zhou");
//获取数据
var result = collection.Find<BsonDocument>(filter).ToList();
try
{
var cursor = collection.Watch();
while (true)
{
while (cursor.MoveNext() && cursor.Current.Count() == 0) {} // keep calling MoveNext until we've read the first batch
var next = cursor.Current.First();
var resultDic = next.BackingDocument.ToDictionary();
if (resultDic["operationType"].ToString() == "update")
{
var insertJson = next.BackingDocument.ToList()[5].ToJson();
Dictionary<string, object> result2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(insertJson);
Dictionary<string, string> result3 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(result2["Value"].ToString());
var insertJson2 = next.BackingDocument.ToList()[6].ToJson();
Dictionary<string, object> result4 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(insertJson2);
Dictionary<string, object> result5 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(result4["Value"].ToString());
Dictionary<string, string> result6 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(result5["updatedFields"].ToString());
updateEvent(result3, result6);
}
else if (resultDic["operationType"].ToString() == "insert")
{
var insertJson = next.BackingDocument.Elements.ToList()[4].ToJson();
Dictionary<string, object> result2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(insertJson);
test result3 = Newtonsoft.Json.JsonConvert.DeserializeObject<test>(result2["Value"].ToString());
addEvent(result3);
}
else if (resultDic["operationType"].ToString() == "delete")
{
var insertJson = next.BackingDocument.ToList()[5].ToJson();
Dictionary<string, object> result2 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(insertJson);
Dictionary <string, string> result3 = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(result2["Value"].ToString());
deleteEvent(result3);
}
else {
continue;
}
}
cursor.Dispose();
}
catch (Exception e)
{
var a = e.StackTrace;
}
}
本文用于转载记录使用。