我对MongoDB查询进行了抽象,因此我将表达式树传递给它,以过滤从数据库检索的文档。例如:
var filterExpression = x => x.IsPublished && x.Topics.Contains("fish");
MyCollection.Get(filterExpression);
在执行此操作后,我要做:
_collection.Find(filterExpression).ToListAsync();
我对此也有假冒品,用于测试:
Collection.Where(expression.Compile());
现在,我需要执行“相交”查询,例如,获取所有已发布的文档,并包含有关“鱼”或“芯片”的主题。
在mongo中,我必须使用:
Builders<TDAO>.Filter.AnyIn(setInDocument, setToIntersect)
其中的参数具有类型:
Expression<Func<TDAO, IEnumerable<string>>> setInDocument
IEnumerable<string> setToIntersect
是否有一种方法可以将这些类型转换为相交,例如:
.Where(setInDocument.Intersect(setToIntersect).Any())