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

时间:2015-06-27 03:58:28

标签: c# mongodb

我正在使用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)   &LT;序列化(MosPrice))。

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

3 个答案:

答案 0 :(得分:3)

要解决此类查询,请使用BsonJavaScript

使用旧驱动程序

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

使用新驱动程序

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

答案 1 :(得分:0)

出现问题因为您尝试过滤的条件不是常数值。 Mongo db驱动程序不支持这种情况。

答案 2 :(得分:0)

似乎你根本不能:

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

我打算将这张票关闭为Works as Designed。“

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