我正在使用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湖名?
提前谢谢你。这让我发疯了。或者你可以给我一个例子。
答案 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")