对 Mongo 有相当少的经验,请帮助...我在 Mondo DB 中有 Employee 集合(字段是:FirstName、LastName、Title 等),使用 C# MongoDB 驱动程序并将集合用作 IQueryable,因此我可以搜索使用 LINQ 获取数据。
我需要在 Mongo 的 Employee 集合中执行复杂的搜索。例如,用户输入 SearchText="John Doe CEO",代码将此字符串拆分为数组:["John", "Doe", "CEO"]。任务是:如果任何字段(FirstName OR LastName OR Title)包含数组中的任何单词,则查询应将其作为结果返回。
AFAIR,当我查询一个简单的列表时,这个语句可以正常工作:
collection.AsQueryable().Where(e =>
allWordsArr.Any(_ => e.FirstName.ToLower().StartsWith(_.ToLower())) ||
allWordsArr.Any(_ => e.LastName.ToLower().StartsWith(_.ToLower())) ||
allWordsArr.Any(_ => e.Title.ToLower().StartsWith(_.ToLower())))
但是当我在真正的 Mongo DB 上运行查询时,由于不支持的运算符 string[].Any... 而失败...所以我无法将 C# 代码中的数组传递到 Mongo DB 然后 - 执行 LINQ/搜索操作,基于提供的数组元素...似乎我不能使用字符串数组作为初始表达式(allWordsArr.Any(...))
如何使用多个字段和单词数组执行搜索?我更喜欢使用 collection.AsQueryable(..)+LINQ 方法,但如果不可能 - 欢迎任何建议......
非常感谢!