我的文档中有一个数组属性,让我们称之为arrayProperty,类似于以下内容:
{
_id: mongoObjectIdThingy,
arrayProperty: [
{string1: "aString",otherProperty:"somethingelse"},
{string1: "aString2",otherProperty:"somethingelse"}
]
}
我将使用mongodb c#驱动程序。我想要查找包含列表中任意一个string1值的所有文档。例如,假设我有一个字符串列表:
["a","b","aString"]
我希望查询返回上面的文档。我已经尝试过这个:
var builder = Builders<MyObject>.Filter;
var listToFind = new List<string>{"a","b","aString"};
return builder.ElemMatch(o => o.arrayProperty,
d => listToFind.Contains(d.string1));
但是收到了以下异常:
不支持的过滤器: Contains(value(System.Collections.Generic.List`1[System.String]))
似乎无法在驱动程序的筛选表达式中执行包含的linq表达式。如何在C#中使用mongoDB编写此类查询呢?