使用 .net/c# 驱动程序对集合执行更新后未收到任何 ChangeStreamDocuments

问题描述 投票:0回答:1

有没有办法调试为什么在使用 .net/C# 驱动程序迭代更改流游标时监视的集合不返回任何更改流文档?我没有收到任何异常,代码只是不断迭代文档批次(

MoveNext()
),而这些批次中没有任何文档(
cursor.Current.Count()
)。

在此发布之前,我检查了是否可以使用 mongoDB shell(mongosh) 观看完全相同的集合,并且我能够使用 mongosh 成功接收更新通知。

我使用完全相同的用户从 .net/C# 和 mongosh 观看相同的集合

以下是用于执行特定集合的监视的示例 C# 代码:

           var var _cursor = _collection.Watch()
            var updateResult = await _collection.UpdateOneAsync(filter, updateBuilder.Combine(updateList));

                while (_cursor.MoveNext() && _cursor.Current.Count() == 0)
                {
                    foreach (var item in _cursor.Current)
                    {
                        Console.WriteLine("Hello!");
                        Console.WriteLine(item);
                    }
                }
            _cursor.dispose();

            return updateResult.ModifiedCount == 1;
mongodb mongodb-.net-driver
1个回答
0
投票

所以,这是一个逻辑错误,在这种情况下我没有意识到。我太沉迷于检查每批变更流文档的计数,我认为这是不必要的。在我的案例中实际有效的更正代码如下:

            var _cursor = _collection.Watch()
            var updateResult = await _collection.UpdateOneAsync(filter, updateBuilder.Combine(updateList));

                while (_cursor.MoveNext())
                {
                    foreach (var item in _cursor.Current)
                    {
                        Console.WriteLine("Hello!");
                        Console.WriteLine(item);
                    }
                }
            _cursor.dispose();

            return updateResult.ModifiedCount == 1;
© www.soinside.com 2019 - 2024. All rights reserved.