【发布时间】:2018-05-14 14:42:45
【问题描述】:
我有一个收藏,用于存储用户之间的友谊。例如:
user_1 -> user_4
user_1 -> user_8
user_1 -> user_23
等等。
在这个集合中只有这两个字段和条目的标准“_id”字段。
问题:我想比较两个不同的用户,并希望得到两个用户作为结果的条目。
例如:
集合中的 user_1 个条目:
user_1 -> user_4
user_1 -> user_8
user_1 -> user_23
集合中的 user_2 个条目:
user_2 -> user_4
user_2 -> user_323
user_2 -> user_23
当我知道比较 user_1 和 user_2 条目时,查询应该返回 2 个条目作为结果(两个用户的条目相同):
user_4
user_23
所以我知道 user_1 和 user_2 有 2 个共同的朋友(user_4 和 user_23)
更新:
这是当前的集合结构:
{ "_id" : ObjectId("5aacd8f60d16f81bfb2ec729"), "username" : "bellamissy95", "belongs_to_user" : ObjectId("5aacd8500d16f81bd56f0e90")}
{ "_id" : ObjectId("5aacd8f60d16f81bfb2ec72a"), "username" : "salome350", "belongs_to_user" : ObjectId("5aacd8500d16f81bd56f0e90")}
{ "_id" : ObjectId("5aacd8f60d16f81bfb2ec72b"), "username" : "jacky_25.11.17_", "belongs_to_user" : ObjectId("5aacd8500d16f81bd56f0e90")}
{ "_id" : ObjectId("5aacd8f60d16f81bfb2ec72c"), "username" : "jxsmin.mke", "belongs_to_user" : ObjectId("5aacd8500d16f81bd56f0e90")}
{ "_id" : ObjectId("5aacd8f60d16f81bfb2ec72d"), "username" : "toni_w2005", "belongs_to_user" : ObjectId("5aacd8500d16f81bd56f0e90")}
Legend:
"_id": the id of the entry
"username": name of the friend
"belongs_to_user": _id of the user entry
有人知道怎么做吗?
谢谢!
【问题讨论】:
-
不是很清楚,因为实际显示文档在您真正存储的地方是如何表示的会非常有益。总是有“一种方法”,但你的“真实”文档是什么样的,这对实际解决方案很重要。我建议你实际展示这一点,而不是一些不能准确描述你真正拥有的抽象版本。至少从任何查看问题的人的角度来看。
-
@NeilLunn 我更新了帖子并插入了当前的集合结构。希望对您有所帮助。
-
那么这些数据有什么关系呢?每个条目都是一个“独特”的朋友不是吗?是不是要显示共享相同朋友的用户?显示一些支持这一点的数据,因为到目前为止没有用户与任何其他用户共享相同的“朋友”。
-
是的,这是两个用户之间的典型朋友关系。因此,当我的系统存储人与人之间的所有关系时,我想知道用户 A 和用户 B(相比之下)有多少共同的朋友。就是这样。
标签: mongodb mongodb-query