我有一个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