首页 > 解决方案 > mongodb nodejs驱动updateOne没有设置新值

问题描述

我正在尝试更新 mongodb 用户文档。如下

{
  "_id":"123",
  "email":"sam@example.com"
}

我想在此文档中添加一个字段“名称”。

我的代码如下

async function test() {
    const user = {"_id":"123", "email" : "sam@example.com" };
    async function setUsername(user, update) {
      await userCollection.updateOne(user, update);
    }
    await setUsername(user, { $set: { name: "sam"} });
}
test();

但是,当我在数据库中看到时,我看不到文档中设置的字段。

我确定我以某种方式错过了节点驱动程序的实现方式,但我不确定这个问题。

我什至尝试过使用 upsert: true 选项,它给了我一个错误,因为文档已经存在。

标签: javascriptmongodbnode-mongodb-native

解决方案


我想我把函数名给错了,而且我之前没有创建文档。

发布有效的最终片段:

const { MongoClient } = require("mongodb");
async function test() {
    const mclient = await MongoClient.connect("mongodb://localhost:27017/?w=1", {
      useNewUrlParser: true
    });
    const db = mclient.db("test");
    const userCollection = db.collection("user");
    const user = { _id: "123", email: "sam@example.com" };
    function setUsername(user, update) {
      return userCollection.updateOne(user, update);
    }
    await setUsername(user, { $set: { name: "sam" } });
}
(async () => {
   test();
})();

推荐阅读