在mongodb中选择id中存在数组字段的所有用户名

时间:2013-06-02 17:13:50

标签: mongodb select

这是集合coll_users

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

好的,我想选择来自friend_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的所有用户

问候

2 个答案:

答案 0 :(得分:1)

您可以使用聚合框架:

db.coll_users.aggregate( [ 
   {$unwind : "$friend_id"},
   {$project: { selfAsFriend: {$eq:["$user_id","$friend_id"]}, user_id:1 } },
   {$match  : { selfAsFriend : true } }
] );

答案 1 :(得分:0)

你应该使用

db.coll_users.find( { "_id" : ObjectId("51aaba74e747509139beed9b"), 
    "friend_id" : { $in : [ 2, 3, 55, 56 ] }, "password" : "something", "user_id" : 1, 
    "username" : "something" }, 
    {"username" : 1 } )