MongoDB更改流,如何在不使用json格式的情况下编写不同的匹配函数变体

问题描述

我正在尝试用 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 (将#修改为@)