【发布时间】:2020-07-31 10:22:50
【问题描述】:
我有一个名为“用户”的集合。
这是一个文档的示例。
{"_id":{"$oid":"xxxxxxxxxxxxxxxxxxx"},
"userId":"ANKIT",
"token":"token123",
"badge":{"$numberInt":"0"},
"useLocalCurrency":true,
"notifyCustomerRejected":true,
"notifyReworkRequest":true,
"notifyMoaApproved":true,
"notifyCustomerAccepted":true,
"__v":{"$numberInt":"0"},
"tokens":[]}
我正在尝试将 token 推送到数据库迁移中的所有文档的 tokens 数组中。
这是我尝试过的:
export function up(next) {
let mClient = null;
return MongoClient.connect(url)
.then(client => {
mClient = client;
return client.db('notifications');
})
.then(db => {
const User = db.collection('users');
return User.find().forEach(result => {
let { _id, userId, tokens, token } = result;
tokens.push(token);
tokens = Array.from(new Set(tokens));
result.tokens = tokens;
console.log(result._id);
console.log(result.tokens);
User.update({ _id: _id, userId: userId }, { $set: { tokens: tokens } });
});
})
.then(() => {
mClient.close();
return next();
})
.catch(err => next(err));
}
通过这样做,我只会按照我想要的方式更新第一个文档,而不是其余的。我在这里做错了什么?
谢谢
【问题讨论】:
标签: javascript node.js mongodb dbmigrate