Mr7*_*267 6 c# mongodb mongodb-csharp-2.0 mongodb-.net-driver
我使用的是最新版本的Mongo C#驱动程序,它使用了大量的Async和builder模式.这很好.我试图将SQL where子句转换为Mongo FilterDefinition对象.
知道如何处理"包含"?
喜欢:
where x contains 'ABC'
Run Code Online (Sandbox Code Playgroud)
Ofi*_*fir 13
为了在V2 API中实现这一点,请使用`Filter.Regex':
var collection = db.GetCollection<BsonDocument>("collection");
var filter = Builders<BsonDocument>.Filter.Regex("fieldName", new BsonRegularExpression(".*fieldValue.*"));
var data = await (await coll.FindAsync<BsonDocument>(filter).ConfigureAwait(false)).ToListAsync();
//continue process data
Run Code Online (Sandbox Code Playgroud)
如果x
是一个字符串,你可以使用一个简单的正则表达式.对于2.0驱动程序,您可以手动创建FilterDefinition
:
FilterDefinition<BsonDocument> filter = "{ x : { $regex : /ABC/ } }";
Run Code Online (Sandbox Code Playgroud)
或者构建过滤器使用Builder
:
var builder = Builders<BsonDocument>.Filter;
var filter = builder.Matches("x", "ABC");
Run Code Online (Sandbox Code Playgroud)
然后,您可以在查询中使用过滤器:
using (var cursor = await collection.Find(filter).ToCursorAsync())
{
// ...
}
Run Code Online (Sandbox Code Playgroud)