在Spring mongoTemplates中编写LIKE等价查询.或者我应该用什么



我正在使用spring和MongoTemplate,并试图编写一个等效的查询SQL LIKE语句。我还没有看到一个满意的答案,代码如下:

@Document
public class Lake {
@Id
private String oid;
@Indexed (sparse = true)
private String name;
private String state;
}

public List<Lake> listLakesLike(String likename) {
try {
    Query filter = new Query(Criteria.where("name").regex("lakename","i"));
    List<Lake> lakes = mongoTemplate.find(filter, Lake.class);
    return lakes
}  

我认为这是一个不工作的例子,没有湖泊返回。

如何编写一个mongoTemplate。发现基于传入值likename匹配LIKE湖名称的结果?

提前谢谢你…这快把我逼疯了。或者你可以给我举个例子

MongoDB Spring语法

Query filter = new Query(Criteria.where("name").regex("lakename","i"));

相当于MongoDB shell命令

db.lake.find({name:/lakename/i})

注意在弹簧中不需要前后斜杠。尝试命令首先在你的shell检查你有所有的数据正确,如果它不工作,我很确定你的问题在于其他地方(例如:你的Spring MongoDB是指向错误的主机/数据库。集合名称)

还要注意Spring MongoDB隐式地将类名Lake转换为集合名Lake(小写)。如果您需要指定显式集合名称,您可以使用@Document(collection = "Lake")

相关内容

最新更新