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

时间:2013-06-02 22:05:14

标签: java spring mongodb

我正在使用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
}  

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

如何根据传入的值likename编写mongoTemplate.find,以获得匹配的LIKE湖名?

提前谢谢你。这让我发疯了。或者你可以给我一个例子。

1 个答案:

答案 0 :(得分:4)

Spring MongoDB语法

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

等同于MongoDB shell命令

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

注意弹簧前导和尾随斜杠不是必需的。首先在shell中尝试命令检查所有数据是否正确,如果它不起作用我很确定你的问题出在其他地方(例如:你的Spring MongoDB指向错误的host / database.collection名称)< / p>

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

执行此操作