MongoDB C#2.0驱动程序查询字段A小于字段B的位置

本文关键字:字段 小于 位置 MongoDB 驱动程序 查询 C#2 | 更新日期: 2023-09-27 17:59:55

我使用的是C#2.0 MongoDB驱动程序。

我正在努力查找字段A小于字段B的所有文档。

我试过这个:

var filter = Builders<Stock>.Filter.Where(s => s.LastPrice < s.MosPrice);
var result = await _collection.Find(filter).ToListAsync();
return result;

但我收到了以下错误:

System.ArgumentException不支持的筛选器:(序列化(LastPrice)<序列化(MosPrice))。

如何使用新的C#MongoDB驱动程序执行此查询?

MongoDB C#2.0驱动程序查询字段A小于字段B的位置

要解决这类查询,我使用BsonJavaScript:

使用旧驱动程序

var filter = Query.Where(new BsonJavaScript("this.LastPrice < this.MosPrice"));

使用新驱动程序

var filter = new BsonDocument(new BsonDocument("$where", new BsonJavaScript("this.LastPrice < this.MosPrice")));

当您试图通过非常数值筛选条件时,会出现问题。Mongo-db驱动程序不支持这种情况。

似乎你根本无法:

"查询的问题是MongoDB不允许将两个字段相互比较。您只能将字段与常量进行比较。由于此限制,我们无法转换查询。这根本不是有效的MongoDB语法。

我将以"按设计工作"的名义关闭这张票。"

https://jira.mongodb.org/browse/CSHARP-1592