mongo db に埋め込まれたドキュメントをクエリする際の問題。ユーザーの を取得しようとしてconversationId
いますが、null が返されます。
サンプル文書:
{
"_id" : ObjectId("5787391f191fda3a4430c749"),
"conversationId" : "fWFGIr0xAbQytmVcQIPV",
"user" : [{_id : "800", "name" : "Tim"},{_id : "500", "name" : "Kingsley"},
{_id : "400", "name" : "Roger"}],
"type" : "PRIVATE"
}
クエリ:
Aggregation agg = newAggregation(
match(Criteria.where("type").is("PRIVATE")),
group("conversationId").push("user.id").as("users"),
match(Criteria.where("users").all(Arrays.asList('800','400','500')))
);
AggregationResults<Rooms> groupResults = mongoOps.aggregate(agg, ROOMS, Rooms.class);
List<Rooms> result = groupResults.getMappedResults();
result.get(0).getId() // returns null
result.get(0).getId()
私のクエリによると、ユーザーに存在する会話IDが期待されているため、nullが返されます。