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驱动程序执行此查询?
要解决这类查询,我使用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