在mongo存储库中用正则表达式查询数组

a5g8bdjr  于 2021-07-04  发布在  Java
关注(0)|答案(1)|浏览(317)

以下查询不适用于mongo存储库-

@Query(value = "{ 'items' : {$elemMatch : {'attributes' : {$all : [/^?0/i]}}}}")
List<MenuEntity> findMenuByItemAttribute(String attrName);

问题似乎是我在哪里传递?注解中的0。我需要在某处传递报价吗?

db.menus.find({ 'items' : {$elemMatch : {'attributes' : {$all : [/^sav/i]}}}})

上面的查询在mongoshell中返回结果
文件结构-

db.menus.findOne()
{
    "_id" : ObjectId("5cf25412326c3f4f26df039b"),
    "restaurantId" : "301728",
    "items" : [
            {
                    "itemId" : "CEBM4H41JR",
                    "name" : "Crun Chicken",
                    "imageUrl" : "",
                    "price" : 572,
                    "attributes" : [
                            "Tasty",
                            "Spicy"
                    ]
            },
            {
                    "itemId" : "53Q0XS3HPR",
                    "name" : "Devils Chicken",
                    "imageUrl" : "",
                    "price" : 595,
                    "attributes" : [
                            "Gravy",
                            "Salty"
                    ]
            }
}
wwwo4jvm

wwwo4jvm1#

不必自己编写mongo查询。您可以扩展mongorepository并使用派生查询,只需在接口中定义您的方法,如:

List<MenuEntity> findByItemsAttributes(String attribute);

相关问题