MongoDB:为两个不同的用户查找相同的条目?

时间:2018-05-12 13:58:01

标签: mongodb mongodb-query

我有一个集合,用于存储用户之间的友谊。例如:

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条目时,查询应该给我两个条目作为结果(两个用户的条目相同):

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

有人知道怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设具有数据的集合被命名为“友谊”并被定义为

{ "_id" : <some unique number> , "user":"user_1","friend":"user_4"}

以下Javascript可用于在任何两个用户中找到共同的朋友。

var friendlist = [];
db.friendship.find({"user":{$in:['user_1','user_2']}},{"friend":1,"_id":0}).forEach(function(d) { if (friendlist.includes(d.friend) ) {print(d.friend)} ;friendlist.push(d.friend); });