Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mongodb查询在使用c的集合中使用FilterDefinition失败#_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

C# Mongodb查询在使用c的集合中使用FilterDefinition失败#

C# Mongodb查询在使用c的集合中使用FilterDefinition失败#,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我试图将这个“简单”的查询从MongoDB控制台移动到我的C代码中 以下是查询: db.getCollection('Entity').find({ Keywords : { $regex : /ABC/ } }) 此查询返回关键字数组中包含“ABC”的所有实体 当我尝试在C#中使用MongoDB C#驱动程序执行此操作时,我编写了以下代码: FilterDefinition<Entity> filterDefinition = "{ Keywords : { $regex : /

我试图将这个“简单”的查询从MongoDB控制台移动到我的C代码中

以下是查询:

db.getCollection('Entity').find({ Keywords : { $regex : /ABC/ } })
此查询返回关键字数组中包含“ABC”的所有实体

当我尝试在C#中使用MongoDB C#驱动程序执行此操作时,我编写了以下代码:

FilterDefinition<Entity> filterDefinition = "{ Keywords : { $regex : /ABC/ } }";
var data= await _repository.Collection.Find(filterDefinition).ToListAsync();
FilterDefinition FilterDefinition=“{关键字:{$regex:/ABC/}”;
var data=await_repository.Collection.Find(filterDefinition.ToListSync();
但我有一个错误:

FormatException:JSON读取器需要一个字符串,但找到“/ABC/”


谢谢

可以使用包含如下正则表达式的表达式

var regex = new Regex("ABC");
return collection.Find(e => regex.IsMatch(e.Keywords)).ToListAsync();
如果要创建
过滤器定义
,请使用生成器

var filter = Builders<Entity>.Filter.Regex("keywords", new BsonRegularExpression("ABC"));
return collection.Find(filter).ToListAsync();

您是否尝试过在csharp驱动程序中使用Matches方法?您可以使用Mongo查询生成器来构造查询以针对集合运行

e、 g

var search=“ABC”;
Matches(t=>t.Keywords,新的BsonRegularExpression(string.Format(“/{0}/i”,Regex.Escape(search));

然后,返回的IMongoQuery可以与其他查询一起用于查询您的收藏。

@chemitaxis我为数组添加了一个示例。谢谢,它工作得很好。。。但为什么我的解决方案不起作用呢?我可以看到过滤器是相同的。第二部分没有必要:var filter=Builders.filter.Regex(“关键字”,新的BsonRegularExpression(“/”+query+“/”));这很好。@chemitaxis我想是因为
FilterDefinition
string转换需要JSON,而JSON没有regex-literalsPlease,请用我的注释编辑您的答案,然后我像OK一样检查:)
return collection.Find(e => e.Keywords.Any(k => regex.IsMatch(k)).ToListAsync();
var search = "ABC";    
Query<Entity>.Matches(t => t.Keywords, new BsonRegularExpression(string.Format("/{0}/i", Regex.Escape(search))));