db.users.find();
会给我一系列用户:
[{
_id: 123
name: bob
},{
_id: 456
name: tom
}]
我需要通过id将用户映射到另一个集合,所以我想从mongo获取一个对象,其中键是_id,值是用户doc。
即
users = {
123: {_id: 123, name: bob},
456: {_id, 456, name:tom}
}
然后我可以直接从该对象访问用户,而无需迭代数组来查找特定用户。
id = 123;
user = users[id];
答案 0 :(得分:2)
你不能从mongodb获得像这样的对象,但是自己构建它很容易:
db.users.find(function (err, docs) {
var users = {};
docs.forEach(function (doc) {
users[doc._id] = doc;
});
do_whatever_you_want_next(users);
});
答案 1 :(得分:0)
以更现代的语法发布我的解决方案:
const pushSubscriptions = await PushSubscription.find({ token: { $in: tokens } }).exec();
const userTokens = pushSubscriptions.reduce(
(result, ps) => {
result[ps.token] = ps;
return result;
},
{});