0

这是集合 coll_users 中的字段

_id // ObjectID
username // type string
password // type string
friend_id // array number ( ids of friends)
user_id // Number (my id)

好的,我想从朋友 ID 中存在的 coll_users 中选择所有用户名,我的意思是?

db.coll_users.find()

{ "_id" : ObjectId("51aaba74e747509139beed9b"), "friend_id" : [ 2, 3, 55, 56 ], "password" : "something", "user_id" : 1, "username" : "something" }

我要做的是选择集合的friend_id中存在user_id的所有用户

问候

4

2 回答 2

1

您可以使用聚合框架:

db.coll_users.aggregate( [ 
   {$unwind : "$friend_id"},
   {$project: { selfAsFriend: {$eq:["$user_id","$friend_id"]}, user_id:1 } },
   {$match  : { selfAsFriend : true } }
] );
于 2013-06-02T19:00:31.317 回答
0

你应该使用

db.coll_users.find( { "_id" : ObjectId("51aaba74e747509139beed9b"), 
    "friend_id" : { $in : [ 2, 3, 55, 56 ] }, "password" : "something", "user_id" : 1, 
    "username" : "something" }, 
    {"username" : 1 } )
于 2013-06-02T17:20:36.657 回答