C#驱动程序中的MongoDB评估查询表达式

5
我在 MongoDB 3.6 中发现了 $expr 特性。 我想与更改流结合使用,以便仅在更新文档的属性A大于属性B时接收更新。
db.items.find({ $expr: { $gt: [ "$A" , "$B" ] } });

这个特性在C#驱动中实现了吗?我正在使用构建器来构建管道过滤器,但没有找到适用于$expr操作符的方法。

3
目前 LINQ 不支持该功能,也没有真正的替代方法。您可以为任何 MongoDB 操作构建 BsonDocument,以完成没有等效操作的任务。 - Neil Lunn
很遗憾。谢谢! - aseipel
2
你能做的最好的是在不同阶段投影值并进行匹配。当然,这是一个阶段分离的过程,就像 $project$match 一样,除非你自己输入 BSON 表达式。 - Neil Lunn
1个回答

1

我最近也遇到了这个问题,最终选择了将查询作为字符串编写到匹配管道中的跟随选项。

var cursor = _collection.Watch(PipelineDefinition<YourType, YourType>.Create(
  new[]
  {
    PipelineStageDefinitionBuilder.Match<BsonDocument>(@"{ $expr: { $eq: [ ""$A"" , ""$B"" ] }  }")
  }));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接