我有一个集合,用于存储用户之间的友谊。例如:
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
有人知道怎么做吗?
谢谢!
答案 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); });