Mongodb c#查询LINQ中的条件
本文关键字:条件 LINQ 查询 Mongodb | 更新日期: 2023-09-27 18:22:37
我的查询如下:
var query = from p in collection
where p.MinStockQuantity >= p.StockQuantity
select p;
我无法运行,因为我有异常:不支持的筛选器:([MinStockQuantity] >= [StockQuantity])
这个查询也不起作用,同样的错误。
var collection = database.GetCollection<Product>("Product");
var builder = Builders<Product>.Filter;
var filter = builder.Where(o => o.MinStockQuantity > o.StockQuantity);
var query = collection.Find(filter).ToListAsync().Result;
如何比较两个字段?
我知道我很晚了,但这很好,试试这个:
var collection = database.GetCollection<Product>("Product");
var builder = Builders<Product>.Filter;
var filter = builder.Gt(o => o.MinStockQuantity , o.StockQuantity);
var query = collection.Find(filter).ToListAsync().Result;
这里的Gt大于。存在各种其他方法,例如Gte=大于等于等等。
所以我之前的回答显然是错误的。你应该使用这个查询
db.products.find({ $where: "this.MinStockQuantity > this.StockQuantity" })
要在c#世界中运行此查询,您需要使用BSON文档:
var doc = MongoDB.Bson.Serialization.BsonSerializer
.Deserialize<BsonDocument>
("{$where: '"this.MinStockQuantity > this.StockQuantity'"}");
var result = collection.Find(new CommandDocument(doc));
我在测试应用程序中使用了该查询,它会发出正确的结果。