Mau*_*one 6 .net c# mongodb mongodb-.net-driver
我正在使用 MongoDB 3.2,我想使用官方 .NET驱动程序(2.6)从 C# 进行查询
使用 Robomongo 进行搜索,正确查询为:
db.getCollection('collection1').find({ $and: [ { type: "ws128" }, { tsend: { $gte: ISODate("2018-05-11T14:39:33.000Z"), $lt: ISODate("2018-05-11T14:39:40.000Z") } } ] })
Run Code Online (Sandbox Code Playgroud)
我想找到所有具有 key type = ws128并且变量tsend位于查询中显示的两个日期之间的文档。
在 C# 中,我定义了如下所示的过滤器,但我不知道如何进行查询:
DateTime datetimestart = new DateTime(2018, 5, 11, 14, 39, 33);
DateTime datetimeend = new DateTime(2018, 5, 11, 14, 39, 40);
var filter1 = Builders<BsonDocument>.Filter.Eq("type", "ws128");
var filter2 = Builders<BsonDocument>.Filter.Gte("tsend", datetimeend);
var filter3 = Builders<BsonDocument>.Filter.Lt("tsend", datetimestart);
Run Code Online (Sandbox Code Playgroud)
使用单个过滤器,搜索没有问题,如下所示,但我不知道如何包含 3 个过滤器。
var cursor = collection.Find(filter1).ToCursor();
Run Code Online (Sandbox Code Playgroud)
有人可以指导我继续吗?谢谢!问候,
Joh*_*ica 13
你可以简单地做:
collection.Find(filter1 & filter2 & filter3)
Run Code Online (Sandbox Code Playgroud)
或者:
collection.Find(Builders<BsonDocument>.Filter.And(filter1, filter2, filter3))
Run Code Online (Sandbox Code Playgroud)
使用单个 &
DateTime datetimestart = new DateTime(2018, 5, 11, 14, 39, 33);
DateTime datetimeend = new DateTime(2018, 5, 11, 14, 39, 40);
var filter1 = Builders<BsonDocument>.Filter.Eq("type", "ws128");
var filter2 = Builders<BsonDocument>.Filter.Gte("tsend", datetimeend);
var filter3 = Builders<BsonDocument>.Filter.Lt("tsend", datetimestart);
var andFilter = filter1 & filter2 & filter3;
var cursor = collection.Find(andFilter).ToCursor();
Run Code Online (Sandbox Code Playgroud)
我可能会以稍微不同的方式编写该代码。我发现读和写更容易:
DateTime datetimestart = new DateTime(2018, 5, 11, 14, 39, 33);
DateTime datetimeend = new DateTime(2018, 5, 11, 14, 39, 40);
var builder = Builders<BsonDocument>.Filter;
var filter1 = builder.Eq("type", "ws128");
var filter2 = builder.Gte("tsend", datetimeend);
var filter3 = builder.Lt("tsend", datetimestart);
var cursor = collection.Find(filter1 & filter2 & filter3).ToCursor();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5391 次 |
最近记录: |