【发布时间】:2015-08-15 23:39:56
【问题描述】:
我有一个如下所示的代码块。我找不到如何实现这一点。
- 我在 mongodb 中有房间集合,该集合中的文档包括用户 ID 数组。每个房间可以有多个用户。
- 所以我想找到房间中包含我的用户 ID 的用户名。
数据库集合:
房间 {roomId:1, users:[99, 100]}, {roomId:2, users:[99, 101]}
用户 {_id:99, name:"Alex"},{_id:100, name:"Harry"},{_id:101, name:"Tom"}
var userId = 99;
var arrUserIds = [];
var arrRooms = [];
var strUserNames = "";
db.collection("rooms").find({"users.userId":userId}).toArray(function(err, rooms) {
for (var i=0; i<rooms.length; i++) {
arrUserIds = [];
for(var j=0; j<rooms[i].users.length; j++){
arrUserIds.push(new BSON.ObjectID(rooms[i].users[j].userId));
}
db.collection('users').find({"_id": {$in: arrUserIds}}).toArray(function(err, users) {
strUserNames = users.map(function(elem){return elem.name;}).join(", ");
arrRooms.push({_id:rooms[i].roomId, name:strUserNames });
});
}
res.json({rooms:arrRooms});
});
我想要这样的结果:
arrRooms: [ { _id:1:, name:"Alex, Harry" }, { _id:2:, name:"Alex, Tom" } ]
谢谢
【问题讨论】:
标签: javascript node.js mongodb mongoskin