Поток изменений: почему FullDocument возвращается как ноль? - PullRequest
0 голосов
/ 08 апреля 2019

Я использую драйвер C # для получения потока изменений.Но теперь я хочу отфильтровать входящие документы.После прочтения некоторого текста и ответов stackoverflow у меня есть два способа сделать это.Но по какой-то причине один из способов возвращает мне полный документ, а другой нет.

Я хотел бы понять, почему это так.Если кто-то сталкивался или знает в чем причина.Пожалуйста, поделитесь своими комментариями.

Ниже работает трубопровод.это означает, что я могу получить полный документ.

var pipeline = new EmptyPipelineDefinition<ChangeStreamDocument<BsonDocument>>()
                                    .Match("{ operationType: { $in: [ 'replace', 'insert', 'delete' ] } }")
                                    .Match($@"{{ ""fullDocument.ProcessUniqueId"" : {{ $ne: ""{Constants.UniqueInstanceGuid}"" }} }}");

Ниже конвейер не работает, то есть я получаю FullDocument как ноль

var pipeline = new EmptyPipelineDefinition<ChangeStreamDocument<BsonDocument>>()
                    .Match(Builders<ChangeStreamDocument<BsonDocument>>
                        .Filter
                        .In(x => x.OperationType, new List<ChangeStreamOperationType> { ChangeStreamOperationType.Insert, ChangeStreamOperationType.Update, ChangeStreamOperationType.Delete }))
                    .Match(Builders<ChangeStreamDocument<BsonDocument>>
                        .Filter.Ne(x => x.FullDocument["ProcessUniqueId"], Constants.UniqueInstanceGuid)); 

И основной цикл обработки потока изменений

using (var cursor = await Database.GetCollection<BsonDocument>("VERSIONS").WatchAsync(pipeline)) {

                await cursor.ForEachAsync((change) => {

                    Console.WriteLine(change.Id);
                });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...