1

我正在使用 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.find 以根据传入的值 likename 匹配 LIKE 湖名称?

提前谢谢你..这让我发疯..或者如果你能指出一个例子。

4

1 回答 1

5

Spring MongoDB 语法

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

相当于 MongoDB shell 命令

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

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

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

于 2013-06-03T00:28:01.373 回答