7
db.users.find();

将返回一组用户:

[{
_id: 123
name: bob
},{
_id: 456
name: tom
}]

我需要通过 id 将用户映射到另一个集合,所以我想从 mongo 取回一个对象,其中键是 _id,值是用户文档。

IE

users = {
123: {_id: 123, name: bob},
456: {_id, 456, name:tom}
}

然后我可以直接从该对象访问用户,而无需迭代数组来查找特定用户。

id = 123;
user = users[id];
4

2 回答 2

4

你不能从 mongodb 中得到像这样的对象,但是自己构建它很容易:

db.users.find(function (err, docs) {
  var users = {};
  docs.forEach(function (doc) {
    users[doc._id] = doc;
  });
  do_whatever_you_want_next(users);
});
于 2013-07-13T23:04:35.290 回答
1

以更现代的语法发布我的解决方案:

    const pushSubscriptions = await PushSubscription.find({ token: { $in: tokens } }).exec();
    const userTokens = pushSubscriptions.reduce(
        (result, ps) => {
            result[ps.token] = ps;
            return result;
        },
        {});
于 2019-06-28T09:31:04.263 回答