C# MongoDB C 2.0驱动程序查询,其中字段A小于字段B

C# MongoDB C 2.0驱动程序查询,其中字段A小于字段B,c#,mongodb,C#,Mongodb,我使用的是C2.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不支持的

我使用的是C2.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不支持的筛选器:SerializationLastPrice
如何使用新的C MongoDB驱动程序执行此查询?

出现问题的原因是您尝试按非常量值进行筛选。Mongo db驱动程序不支持这种情况。

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

对于老司机:

使用新驱动程序:


似乎你根本不能:

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

我要按计划关闭这张票


那么我有什么选择呢?我还可以如何执行此查询?有什么选择吗?这确实是可能的,所以我不知道为什么会关闭。见迈克尔的回答。
var filter = Query.Where(new BsonJavaScript("this.LastPrice < this.MosPrice"));
var filter = new BsonDocument(new BsonDocument("$where", new BsonJavaScript("this.LastPrice < this.MosPrice")));