c# - MongoDB 正则表达式过滤字符串数组项

这是文档结构

{
    "_id" : ObjectId("6284f3eceae4fd4c3cfebb39"),
    "Codes" : [ 
        "Code 1",
        "Code 2",
        "Code 3"
    ]
}

我也有按预期工作的mongo查询

{ "Codes" : { "$elemMatch" : { "$regex" : /code/, $options: 'si' } } }

但是当我尝试使用 mongodb 驱动程序编写 C# 代码时

var filter = Builders<MyClass>.Filter
    .ElemMatch(x => x.Codes,
        Builders<string>.Filter.Regex(c => c, new BsonRegularExpression($"/^{codeFilter}/is")));

并执行这个过滤器定义我有一个例外

System.InvalidOperationException: '无法确定 c => c. 的序列化信息'

我的错误在哪里?如何创建过滤器定义以使用 $regex 运算符检查字符串数组项?

回答1

您为正则表达式生成器创建了错误的泛型类型:

Builders<MyClass>.Filter.ElemMatch(
    x => x.Codes, 
    Builders<Codes>.Filter.Regex(
         c => c.Code, 
         new BsonRegularExpression($"/code/", "si")));

其中实体结构是:

private class MyClass
    {
        public Codes[] Codes { get; set; }
    }

    private class Codes
    {
        public string Code { get; set; }
    }

相似文章

java - 连接MongoDB

早上好。我在连接到MongoDB数据库时遇到问题。我在docker-compose.yml文件中为自己配置了一个数据库和mongoexpress。使用CommandLineRunner,我想将示例数据...