C#MongoDB驱动程序强类型筛选器用法
文档告诉您如何定义过滤器,但不告诉您如何使用它C#MongoDB驱动程序强类型筛选器用法,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,文档告诉您如何定义过滤器,但不告诉您如何使用它 public class Widget : BsonDocument { [BsonElement("X")] public int X { get; set; } [BsonElement("Y")] public int Y { get; set; } } public MyItem Get() { MyItem retvalue = null; var builder = Builders
public class Widget : BsonDocument
{
[BsonElement("X")]
public int X { get; set; }
[BsonElement("Y")]
public int Y { get; set; }
}
public MyItem Get()
{
MyItem retvalue = null;
var builder = Builders<BsonDocument>.Filter;
var filter = builder.Eq("x", 10) & builder.Lt("y", 20);
Console.WriteLine(_collection.Count(filter));
var builder2 = Builders<Widget>.Filter;
var filter2 = builder2.Eq(widget => widget.X, 10) & builder2.Lt(widget => widget.Y, 20);
Console.WriteLine(_collection.Count(filter2));
return retvalue;
}
公共类小部件:BsonDocument
{
[b单一元素(“X”)]
公共整数X{get;set;}
[b单一元素(“Y”)]
公共整数Y{get;set;}
}
公共MyItem Get()
{
MyItem retvalue=null;
var builder=Builders.Filter;
var filter=builder.Eq(“x”,10)和builder.Lt(“y”,20);
Console.WriteLine(_collection.Count(filter));
var builder2=Builders.Filter;
var filter2=builder2.Eq(widget=>widget.X,10)和builder2.Lt(widget=>widget.Y,20);
Console.WriteLine(_collection.Count(filter2));
返回值;
}
因此,第一个筛选器正在工作-但它不是强类型的
第二个过滤器不能这样使用。编译器错误:无法从“MongoDB.Driver.FilterDefinition”转换为“MongoDB.Driver.FilterDefinition” 所以问题是-我如何使用它作为过滤器。显然,filter参数定义为FilterDefinition。从BsonDocument派生MyItem没有帮助。“
filter2.ToBsonDocument()
”已编译,但未生成正确的结果(筛选器不工作!)
有人能给我指出正确的方向吗?还有一些地方我可以读到吗?首先我建议使用as-queryable,这是一种操作查询的简便方法
_result = _collection.AsQueryable().First(w => w.X == x && w.Y < y);
\u result=\u collection.AsQueryable()。首先(w=>w.X==X&&w.Y
或者使用表达式过滤器定义
_result = _collection
.Find(new ExpressionFilterDefinition<Widget>
(widget => widget.X == 10 && widget.Y < y))
.First()
\u结果=\u集合
.Find(新表达式过滤器定义)
(widget=>widget.X==10&&widget.Y
完整版本
c#驱动程序参考正在使用的驱动程序版本是什么?感谢您向我指出ExpressionFilterDefinition。这很有效。我也不确定我以前是否有_database.GetCollection**