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

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

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

问题似乎出在注释中传递?0的地方。我需要在某处传递引号吗?

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

上面的查询在mongo shell中返回结果

文档结构-

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","price" : 595,"attributes" : [
                            "Gravy","Salty"
                    ]
            }
}
iCMS 回答:在mongo存储库中使用正则表达式查询数组

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

List<MenuEntity> findByItemsAttributes(String attribute);
本文链接:https://www.f2er.com/1617858.html

大家都在问