Mongodb 无法查询mongo embedded document中的聚合结果

Mongodb 无法查询mongo embedded document中的聚合结果,mongodb,aggregation-framework,mongo-java,mongo-java-driver,Mongodb,Aggregation Framework,Mongo Java,Mongo Java Driver,在mongo db中查询嵌入文档时出现问题。我试图为用户获取conversationId,但它返回null 样本文件: { "_id" : ObjectId("5787391f191fda3a4430c749"), "conversationId" : "fWFGIr0xAbQytmVcQIPV", "user" : [{_id : "800", "name" : "Tim"},{_id : "500", "name" : "Kingsley"}, {_id : "400", "name" :

在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

Aggregation agg=newAggregation(
匹配(标准,其中“类型”为“专用”),
组(“会话id”).push(“用户id”).as(“用户”),
匹配(Criteria.where(“users”).all(Arrays.asList('800'、'400'、'500'))
);
AggregationResults groupResults=mongoOps.aggregate(agg、ROOMS、ROOMS.class);
List result=groupResults.getMappedResults();
result.get(0).getId()//返回null

result.get(0).getId()
返回null,根据我的查询,我希望用户的会话Id是存在的。

我不确定,为什么要按会话Id分组,然后创建一个包含参与该会话的用户Id的集合

如果您想要的结果是找到一个包含用户“800”、“400”和“500”的对话,那么您可以直接使用find query和$all

Mongo查询将如下所示:

db.test.find({"user._id":{"$all":["800","500","400"]}})

你希望得到什么样的结果?@chridam:我希望得到会话ID,但我得到的是空值。是的,我想要的结果就是这样。但是,它并没有找到想要的对话Id@Karthik:您尝试了上述查询吗?你能粘贴那个java代码吗?聚合agg=newAggregation(match(Criteria.where(“type”).is(“PRIVATE”)),group(“conversationId”).push(“user.\u id”).as(“users”),match(Criteria.where(“users”).all(userprofileid))@Karthik您再次进行分组。根据您的陈述,您不需要也进行聚合。因此,您可以尝试对上面给出的mongo查询进行“查找”查询吗?它正在工作,我还有一些其他问题