问题描述
我正在尝试用 C# 编写 mongodb changestream。我正在寻找一种不使用 bson 或 json 格式在我的管道变量中编写匹配函数的方法。 我现在编写的代码正在观察文档中的特定字段。 这是我的代码。
using MongoDB.Bson;
using MongoDB.Driver;
using System;
namespace changeStream
{
class Program
{
static void Main(string[] args)
{
MongoClient dbClient = new MongoClient("mongodb://localhost:27017");
var database = dbClient.GetDatabase("mydb");
var collection = database.GetCollection<BsonDocument>("userID");
var options = new ChangeStreamOptions { FullDocument = ChangeStreamFullDocumentOption.UpdateLookup };
var pipeline = new EmptyPipelineDeFinition<ChangeStreamDocument<BsonDocument>>().Match("{ operationType: { $in: [ 'insert','delete','update']} $and:[ { 'updateDescription.updatedFields.mainID': { $exists: true }}]}");
var cursor = collection.Watch<ChangeStreamDocument<BsonDocument>>(pipeline,options);
int count = 0;
var enumerator = cursor.ToEnumerable().GetEnumerator();
while (enumerator.MoveNext())
{
ChangeStreamDocument<BsonDocument> doc = enumerator.Current;
count++;
var time = DateTime.Now.ToString("HH:mm:ss tt");
Console.WriteLine(count+" "+time+" "+doc.DocumentKey);
}
}
}
}
如你所见,我的匹配是bson格式,我不想使用bson,有没有其他方法可以编写类似的代码, 这是我发现的东西,
Flux<ChangeStreamEvent<TestObject>> changeStream = mongoTemplate.changeStream(newAggregation(match(where("operationType").is("update").and("updateDescription").exists(true))),TestObject.class,ChangeStreamOptions.empty(),"testObject");
我希望我的代码看起来像这样而不是 bson。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)