2016-03-20 46 views
0

我不知道如何使用mongo驅動程序構建複雜查詢。這是我的查詢:使用C#mongo驅動程序構建查詢

var builder = Builders<MongoNavFilter>.Filter; 
var query = builder.Where(x => x.Link == link && x.SubLink == subLink); 
if (some statement) 
{ 
    var finalExpression = ... 
    query = query & Builders<MongoNavFilter>.Filter.Where(finalExpression); 
} 
if (onsale) 
    query = query & Builders<MongoNavFilter>.Filter.Where(x => !(x.Promo == null && x.Promo == string.Empty)); 

var filters = _db.GetCollection<MongoNavFilter>("NavFilters"). 
        Find(query).ToList(); 

隨着EFIQueryable此代碼工作正常,但我不能mongo driver建立正確的查詢。 誰能告訴我我做錯了什麼?

+0

請與樣品MongoDB的文件更新後的問題。還提到「不能建立正確的查詢?」是什麼意思?你會得到什麼錯誤? – Saleem

回答

1

知道什麼finalExpression是有幫助的,以防出現問題。在我看來,有可能是與!(x.Promo == null && x.Promo == string.Empty)

MongoDB的驅動程序的翻譯,你可以試試下面的代碼,而不是你的,看它是否會有所作爲

var builder = Builders<MongoNavFilter>.Filter; 
var query = builder.Eq(x => x.Link, link) & builder.Eq(x=> x.SubLink, subLink); 
if (some statement) 
{ 
    var finalExpression = ... // write this using the same syntax 
    query = query & filter; 
} 
if (onsale) 
    query = query & builder.Ne(x=>x.Promo, null) & builder.Ne(x=> x. Promo, string.Empty); 

var filters = _db.GetCollection<MongoNavFilter>("NavFilters"). 
       Find(query).ToList(); 
+1

非常感謝您的時間! –

相關問題