C# 如果集合中的任何属性具有“x”字,如何筛选文档?(MongoDB驱动程序,C)

C# 如果集合中的任何属性具有“x”字,如何筛选文档?(MongoDB驱动程序,C),c#,.net,mongodb,linq,driver,C#,.net,Mongodb,Linq,Driver,假设我在一个名为alerts的集合中拥有具有以下结构的文档: { "_id": { "$oid": "5f299ed8905bcf0001cd9a56" }, "CreatedDate": { "$date": "2020-08-04T17:46:00.862Z" }, "Name":

假设我在一个名为alerts的集合中拥有具有以下结构的文档:

{
    "_id": {
        "$oid": "5f299ed8905bcf0001cd9a56"
    },
    "CreatedDate": {
        "$date": "2020-08-04T17:46:00.862Z"
    },
    "Name": "Alert name",
    "Description": "Alert description",
    "AlertTypeId": {
        "$oid": "5f299ea7905bcf0001cd9a54"
    }
    "AlertTrigger": {
        "Variation": "moreThan",
        "Amount": 5
    },
    "Emails": ["hello@hotmail.com", "test@gmail.com"]
}
在我的.Net应用程序中,我的类表示为:

[BsonCollection("alerts")]
public class Alert
{
    public ObjectId Id { get; set; }

    public DateTime CreatedDate { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }

    [BsonRepresentation(BsonType.ObjectId)]
    public string AlertTypeId { get; set; }

    public AlertTrigger AlertTrigger { get; set; }

    public ICollection<string> Emails { get; set; }
}

public class AlertTrigger
{
    public string Variation { get; set; }

    public double Amount { get; set; }
}
我想做的是过滤在任何属性中包含特定关键字的文档。 例如,如果我按单词moreThan或单词hello进行过滤,就会找到上面的元素,因为它们包含在其属性中


如何使用MongoDB驱动程序LinQ,C实现这一点?

C LinQ抽象不包含实现这一点的方法。但是,在MongoDB中,您可以在集合中的所有字段上创建文本索引

db.collection.createIndex{$**:text} 然后,通过编写以下代码,您可以在C语言中对集合进行文本搜索

var客户端=新的MongoClient; var db=client.GetDatabasetext; var collection=db.getcollectionarts; var filter=Builders.filter.TextmoreThan; var result=await collection.Findfilter.toListSync;
最后我尝试了使用Contains->var filterDefinition=builder.Wherex=>x.Name.ToLower.ContainsfilterKey的方法。但我会试试你的解决方案,这样可能更好。谢谢