2016-03-20 47 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

非常感谢您的时间! –

相关问题