我有一个对象数组
df =[{user: "name1", newdata: "data1"},
{user: "name2", newdata: "data3"},
....
]
我有一个集合,其中包含user
和key1
字段。我想查找用户并使用dato.newdata
更新'key1'。我尝试将其包含在循环中,但它不起作用。这是我的代码:
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
client.connect(function(error){
for (dato of df){
client.db(dbasename).collection(collectionname).updateOne(
{user: dato.user},
{$set: {key1: dato.newdata}},
function(error,result){
if (error) console.log(error);
if (result) {
console.log(JSON.stringify(result));
}
}
);
}
})
额外信息:我注意到它仅适用于找到的第一个用户。也许updateOne
返回了一个Promise,而我没有正确处理它?
我已尝试其他一些人建议的代码。但它不起作用。
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
async function changeValue (dbasename,collectionname, user, newData) {
client.db(dbasename).collection(collectionname).updateOne(
{user: user},
{$set: {key1: newdata}},
{upsert:false},
{multi:false},
function(error,result){
if (error) console.log(error);
if (result) {
console.log(JSON.stringify(result));
}
}
);
}
client.connect(function(error){
for (dato of df){
await changeValue(dbasename,collectionname, dato.user, dato.newdata);
}
})
编译器报错:
SyntaxError: await只能在异步函数中使用
。
newdata
字段,我建议使用{ $set: { newdata: dato.newdata } }
而不是{ $set: { key1: dato.newdata } }
。 - prasad_dato.newdata
更新key1
字段。我已经更新了我的问题以避免混淆。 - Juan