我有一个文档,其中包含一个包含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: '?'.
非常感谢您的帮助。