tva*_*her 5 c# mongodb changestream
我有一项服务需要监视 Mongo DB 上的集合以在系统中创建更改。我已设法使用 C# 驱动程序建立与副本集的连接,并使用以下代码来测试更改流。
public async Task WatchLoopAsync()
{
var options = new ChangeStreamOptions
{
FullDocument = ChangeStreamFullDocumentOption.UpdateLookup,
};
using (var cursor = await _collection.WatchAsync(options))
{
_logger.LogInformation("Watching collection {String}",
_deployments.CollectionNamespace);
await cursor.ForEachAsync(changeStreamDocument =>
{
var document = changeStreamDocument.FullDocument;
_logger.LogInformation("Received document: {String}",
document.ToString());
});
}
}
Run Code Online (Sandbox Code Playgroud)
第一个日志显示,表明它正在使用正确的命名空间监视集合。然后,我将一个文档添加到集合中,希望看到某些内容记录为“已接收文档:...”,但没有任何记录。
我遵循此处文档中给出的异步模式。
我的特定问题的解决方案是,由于 C# 中的属性大小写约定,当更改流接收代码无法将属性“名称”与“名称”的对象属性匹配时,它会引发异常。
为了解决这个问题,我使用了以下代码片段:
var conventionPack = new ConventionPack
{
new CamelCaseElementNameConvention()
};
ConventionRegistry.Register("camelCase", conventionPack, t => true);
Run Code Online (Sandbox Code Playgroud)
这会将数据库驱动程序注册为在将实体映射到 BSON 时使用驼峰式大小写约定。
| 归档时间: |
|
| 查看次数: |
1332 次 |
| 最近记录: |