使用ObjectID的Spring Data Mongo自定义存储库查询

我有一个mongo查询我想作为Spring Mongo存储库实现

db.collection.find({ 'items': 
    { $elemmatch: { 
        'refund.$id' :  ObjectId('5638cab2e4b07ff212618d7e') 
        } 
    }
}) 

我的存储库界面是

@Query("{ 'items': { $elemmatch: { 'refund.$id' :  ObjectId(?0) } } }")
RMA findRMAByItemrefund(String refundId);

它抛出JSONParseException

Caused by: com.mongodb.util.JSONParseException: 
{ 'items': { $elemmatch: { 'refund.$id' :  ObjectId("_param_0") } } }
                                       ^
    at com.mongodb.util.JSONParser.parse(JSON.java:216)

解决方法:

试试这个

@Query("{ 'items': { $elemmatch: { 'refund.id' :  ?0 } } }")
RMA findRMAByItemrefund(String refundId);

根据我的经验,?0应该是独立的,不能用作mongo函数参数.

此外,$id是您自己的假设,或者该字段实际存储为$id.如果没有,我将使用refund.id

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结