PanacheMongo 使用通配符查找
PanacheMongo find with wildcard
我想在 Panache 中做一个简单的 find
,但我被通配符所困。
我有:
Model.find("payload.tags.name = ?1", "tag-to")
.stream()
.map(m -> (Model) m)
.collect(Collectors.toList());
我的文档看起来像这样:
{
...
payload:Object{
swagger:"2.0"
info:Object
host:"petstore.swagger.io"
basePath:"/v2"
tags:Array[
0:Object [
name:"tag-to-find"
description:"a tag i want to find"
]
]
}
}
当我尝试查找“tag-to-find”时它起作用了,但我不知道如何使用通配符。在 mongoshell 中,我只使用 db.Model.find({"payload.tags.name": /ag-to-/})
就可以了。
您在 Mongo shell 中使用的是 JavaScript 正则表达式。
您还应该能够将它与 MongoDB with Panache 一起使用。
您通常应该将正则表达式与 $regex
运算符一起使用,不确定 Mongo shell 如何处理它,但以下应该有效:
Model.list("payload.tags.name like ?1", "/tag-to/")
我使用 .list()
而不是 find()
因为它直接 return 文件列表。
这里使用的查询就是我们所谓的 PanacheQL 查询,它将映射到 MongoDB 本机查询,您也可以直接使用本机查询(使用命名或索引参数)。
此处解释了简化查询:https://quarkus.io/guides/mongodb-panache#simplified-queries
我想在 Panache 中做一个简单的 find
,但我被通配符所困。
我有:
Model.find("payload.tags.name = ?1", "tag-to")
.stream()
.map(m -> (Model) m)
.collect(Collectors.toList());
我的文档看起来像这样:
{
...
payload:Object{
swagger:"2.0"
info:Object
host:"petstore.swagger.io"
basePath:"/v2"
tags:Array[
0:Object [
name:"tag-to-find"
description:"a tag i want to find"
]
]
}
}
当我尝试查找“tag-to-find”时它起作用了,但我不知道如何使用通配符。在 mongoshell 中,我只使用 db.Model.find({"payload.tags.name": /ag-to-/})
就可以了。
您在 Mongo shell 中使用的是 JavaScript 正则表达式。 您还应该能够将它与 MongoDB with Panache 一起使用。
您通常应该将正则表达式与 $regex
运算符一起使用,不确定 Mongo shell 如何处理它,但以下应该有效:
Model.list("payload.tags.name like ?1", "/tag-to/")
我使用 .list()
而不是 find()
因为它直接 return 文件列表。
这里使用的查询就是我们所谓的 PanacheQL 查询,它将映射到 MongoDB 本机查询,您也可以直接使用本机查询(使用命名或索引参数)。
此处解释了简化查询:https://quarkus.io/guides/mongodb-panache#simplified-queries