【发布时间】:2017-12-05 07:38:21
【问题描述】:
MongoDb + Spring boot + intersectsArrays
我想随机获取 15 个用户并了解他们的共同兴趣。文档结构是这样的
{
"_id": {
"$oid": "593f773202338a47584b351e"
},
"interests": [
{
"_id": {
"$oid": "5957933cf3c5f5253ec9476c"
},
"name": "abc1",
"facebookId": "123"
}]
]
}
需要为 mongo 返回的每个用户获取共同兴趣。
下面是我的 Spring 启动代码
Criteria criteria = new Criteria().andOperator(Criteria.where("lastLoginDate").gte(Utility.getDateBeforeDays(lastLoginNewerThan)));
Aggregation agg = Aggregation.newAggregation(new CustomAggregationOperation(maxRecords),
Aggregation.match(criteria),Aggregation.project("id","name")
);
AggregationResults<Users> userResults = operations.aggregate(agg, Users.class, Users.class);
List<Users> users = userResults.getMappedResults();
【问题讨论】:
-
您的代码没有太多细节,无法推断出哪个部分不适合您。您的标题建议获取两个数组之间的交集,但您的帖子建议获取多个用户的共同兴趣。您能否通过在帖子中添加示例预期输出和输入来进一步澄清?
-
@Veeram 它的 Tinder 类型的应用程序,我随机获得 15 个人,需要显示共同兴趣的数量。我可以使用上面的代码找到附近的 15 个人,但找不到共同的兴趣。它是这样的。我正在搜索 nearBy Guys 并获取您的个人资料,然后我必须显示我们之间有多少共同兴趣。
-
您可以使用setIntersection 将您的兴趣(应该输入)与每个随机人的兴趣进行比较。
-
@veeram 你能否在春季启动时提供代码 sn-p
标签: mongodb spring-boot mongodb-query aggregation-framework spring-data-mongodb