簡體   English   中英

查詢LINQ中的Mongodb C#條件

[英]Mongodb c# Conditions in query LINQ

我的查詢如下所示:

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;

如何比較2個字段?

所以我以前的回答顯然是錯誤的。 您應該使用該查詢

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));

我在測試應用程序中使用了該查詢,它大喊正確的結果。

我知道我來晚了,但這很正常,請嘗試:

  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 = greater than equal等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM