Mongodb 无法查询mongo embedded document中的聚合结果
在mongo db中查询嵌入文档时出现问题。我试图为用户获取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" :
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查询进行“查找”查询吗?它正在工作,我还有一些其他问题