C# MongoDB C 2.0驱动程序查询,其中字段A小于字段B
我使用的是C2.0 MongoDB驱动程序 我正在尝试查找字段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不支持的
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")));