如何解决PanacheMongo 使用通配符查找
我正在尝试在 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 正则表达式。 您还应该能够将它与带有 Panache 的 MongoDB 一起使用。
您通常应该使用带有 $regex
运算符的正则表达式,不确定 Mongo shell 如何处理它,但以下应该可以工作:
Model.list("payload.tags.name like ?1","/tag-to/")
我使用 .list()
而不是 find()
,因为它直接返回文档列表。
这里使用的查询是我们所说的 PanacheQL 查询,它将映射到 MongoDB 本地查询,您也可以直接使用本地查询(带有命名或索引参数)。
此处解释了简化的查询:https://quarkus.io/guides/mongodb-panache#simplified-queries
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。