我正在使用“通配符文本索引”,以便在班级的每个字段中搜索模式。我还使用投影来删除某个字段:
@Query(value = "{$text: { $search: ?0 }, fields = "{'notWantedField':0}")
但是,我想防止匹配不必要字段中的某些内容。
换句话说,我想先投影(并删除字段),然后搜索其余字段。
有没有一种方法可以在保持通配符搜索的同时将投影和搜索结合起来?
非常感谢。
我正在使用spring-data-mongodb 1.10.8
答案 0 :(得分:0)
可能的解决方案可以是 $ and 运算符和 $ regex 。
例如,遵循Mongodb文档https://docs.mongodb.com/manual/reference/operator/query/text,如果您想创建结合主题和 author ( {1}},您可以在此查询中排除 author 字段:
db.articles.createIndex({"author": "text", "subject": "text"})
在您的情况下,考虑到索引是通配符,您必须使用 regex 排除也在投影中的所有字段。