使用C#mongo驱动程序生成查询

使用C#mongo驱动程序生成查询,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我想知道如何使用mongo驱动程序构建复杂的查询。这是我的疑问: var builder = Builders<MongoNavFilter>.Filter; var query = builder.Where(x => x.Link == link && x.SubLink == subLink); if (some statement) { var finalExpression = ... query = query & Build

我想知道如何使用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();
var builder=Builders.Filter;
var query=builder.Where(x=>x.Link==Link&&x.SubLink==SubLink);
如果(一些陈述)
{
var finalExpression=。。。
query=query&Builders.Filter.Where(finalExpression);
}
如果(出售)
query=query&Builders.Filter.Where(x=>!(x.Promo==null&&x.Promo==string.Empty));
var filters=_db.GetCollection(“NavFilters”)。
查找(查询).ToList();
使用
EF
IQueryable
此代码工作正常,但我无法使用
mongo驱动程序构建正确的查询。

有人能告诉我我做错了什么吗?

如果有问题,知道
最终表达是什么会有所帮助。在我看来,mongodb驱动程序对
的翻译可能有问题!(x.Promo==null&&x.Promo==string.Empty)

你能试试下面的代码而不是你的代码,看看它是否会有所不同吗

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();
var builder=Builders.Filter;
var query=builder.Eq(x=>x.Link,Link)&builder.Eq(x=>x.SubLink,SubLink);
如果(一些陈述)
{
var finalExpression=…//使用相同的语法编写
查询=查询和筛选;
}
如果(出售)
query=query&builder.Ne(x=>x.Promo,null)和builder.Ne(x=>x.Promo,string.Empty);
var filters=_db.GetCollection(“NavFilters”)。
查找(查询).ToList();

如果出现问题,了解最终压力是什么会有所帮助。在我看来,mongodb驱动程序对
的翻译可能有问题!(x.Promo==null&&x.Promo==string.Empty)

你能试试下面的代码而不是你的代码,看看它是否会有所不同吗

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();
var builder=Builders.Filter;
var query=builder.Eq(x=>x.Link,Link)&builder.Eq(x=>x.SubLink,SubLink);
如果(一些陈述)
{
var finalExpression=…//使用相同的语法编写
查询=查询和筛选;
}
如果(出售)
query=query&builder.Ne(x=>x.Promo,null)和builder.Ne(x=>x.Promo,string.Empty);
var filters=_db.GetCollection(“NavFilters”)。
查找(查询).ToList();

请使用MongoDB文档样本更新您的帖子。还请提及“无法生成正确的查询”是什么意思?您会遇到什么错误?请使用示例MongoDB文档更新您的帖子。还要提到“无法生成正确的查询”是什么意思?您会遇到什么错误?非常感谢您的时间!非常感谢您抽出时间!