java - 按包含给定字符串的值搜索记录
问题描述
我有一个收藏:
_id: ObjectId("11313123qeqerq")
products: Array
0: Object
name: "ABC-123"
我想编写一个 Spring 标准查询,它可以找到所有名称包含 ("ABC", "DEF") 的产品
谁能帮我提出一个查询?类似的东西:
query.addCriteria(where(products).elemMatch(where(name).in("ABC", "DEF"));
解决方案
您的方法in()
确实检查了完全相等。
您应该像在 SQL 中一样使用 LIKE。在标准中,它确实翻译为like()
:
criteria.add(Restrictions.disjunction()
.add(Restrictions.like("name", "ABC", MatchMode.ANYWHERE))
.add(Restrictions.like("name", "DEF", MatchMode.ANYWHERE))
);
该标准会在任何地方查找包含 ABC 或 DEF 的字符串。
用于ilike()
不区分大小写的比较。
推荐阅读
- oracle - 从包 A 过程调用时,表插入在包 B 过程中不起作用
- javascript - 在 Quasar 页面消费 Api
- python - PyLint W0108: Lambda may not be > necessary (unnecessary-lambda)
- python - 获取缩写和定义的程序 - 获取所有小写缩写的麻烦
- javascript - 我的sidenav颜色没有随按钮改变(onclick)
- postgresql - Postgres 错误 08001(SQLCLIENT 无法建立 SQLCONNECTION)和 FOC1394 错误
- python - 无论如何使用python将图像导入Visio文档?
- sql - 如何在 knex.js 中正确传递 orderBy 函数的数学函数?
- flutter - 如何在颤动中每 x 秒从 api 获取数据?
- html - 使用反应组件内的标签进行锚导航