$ elem匹配@Query

时间:2019-06-16 02:25:40

标签: java mongodb spring-data-mongodb

我有一个文档,其中包含一个包含DBRef的数组。这是结构:

{
"_id" : ObjectId("5d05a1eab7eb3b4ec8a0af54"),
"participants" : [
        DBRef("users", ObjectId("5d05a1eab7eb3b4ec8a0af38")),
        DBRef("users", ObjectId("5d05a1e9b7eb3b4ec8a0af37"))
],
"_class" : "test.model.convo"
}

我需要获取包含某些特定参与者的文档。该查询可在MongoDB上运行,如下所示:

db.conversations.find({'participants': {$elemMatch:{'$id': ObjectId('5d05a1e9b7eb3b4ec8a0af2e'), '$id': ObjectId('5d05a1eab7eb3b4ec8a0af38') }}}).pretty();

但是,Spring Data MongoDB上的查询抛出错误:

  @Query(value = "{ 'participants': { '$elemMatch' : {'$id': ?0, '$id': ?1} }}",
  fields = "{'id': 1, 'participants': 1, 'messageCount': 1}")
  Optional<Conversation> findParticipantsInAndExcludePosts(String 
  senderId, String recipientId);

通过我也尝试不带$的id的方式,它不起作用。 这是错误:

org.bson.json.JsonParseException: Invalid JSON input. Position: 44. 
Character: '?'.

非常感谢您的帮助。

0 个答案:

没有答案