[英]Issues when using OR in @Query Spring data mongo
我的存储库中有以下方法:
@Query(value = "{ '$or': [?0 ]}") List<MyObject> findByObject(String lookupKeyValuePairs);
我将以下字符串作为输入传递给此方法。
字符串: { 'keyone': 'one','keytwo': 'one' },{ 'keyone': 'two','keytwo': 'two' }
我希望查询是{ '$or': [ { 'keyone': 'one','keytwo': 'one' },{ 'keyone': 'two','keytwo': 'two' } ]}
但 spring 将上述查询评估为
org.springframework.data.mongodb.core.MongoTemplate - find using query: { "$or": ["{ 'keyone': 'one','keytwo': 'one' },{ 'keyone': 'two','keytwo': 'two' }"] } fields: Document{{}} for class: MyClass in collection: MyCollection
并引发以下异常: Caused by: com.mongodb.MongoQueryException: Query failed with error code 2 and error message '$or/$and/$nor entries need to be full objects' on server
是动态参数。 键值对每次都会改变。 这就是为什么我将整个事情作为一个字符串传递。
有人可以帮忙指出问题出在哪里吗?
您可以将它们作为单独的参数传递吗?
@Query("{ '$or' : [ { 'keyone': ?0,'keytwo': ?1},{ 'keyone': ?2,'keytwo': ?3 } ]}")
List<MyObject> findByObject(String param0, String param1, String param2, String param3);
repo.findByObject('one', 'one', 'two', 'two');
或者
@Query("{ '$or' : [ { ?0: ?1, ?2: ?3},{ ?4: ?5, ?6: ?7 } ]}")
List<MyObject> findByObject(String param0, String param1, String param2, String param3, String param4, String param5, String param6, String param7);
repo.findByObject('keyone', 'one', 'keytwo', 'one','keyone', 'two', 'keytwo', 'two');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.