首页 > 解决方案 > 按包含给定字符串的值搜索记录

问题描述

我有一个收藏:

_id: ObjectId("11313123qeqerq")
products: Array
    0: Object
        name: "ABC-123"

我想编写一个 Spring 标准查询,它可以找到所有名称包含 ("ABC", "DEF") 的产品

谁能帮我提出一个查询?类似的东西:

query.addCriteria(where(products).elemMatch(where(name).in("ABC", "DEF"));

标签: javamongodbspring-boot

解决方案


您的方法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()不区分大小写的比较。


推荐阅读