使用Node的MongoDB的PATCH方法

时间:2015-03-03 19:00:17

标签: node.js mongodb mongoose

我想为我的API创建一个PATCH方法,但有些东西我不明白。想象一下,我的MongoDB数据库中有以下文档:

{
    _id  : ObjectId(1234...),
    name : "bob",
    age  : 30
}

现在我想更新此文档,但我不知道我的API会收到什么keys。因此,我想设一个request来更改age,但也添加一个last_name

请求结果如下:

{
    _id  : ObjectId(1234...),
    name : "bob",
    last_name : "smith",
    age  : 44
}

这里的主要问题是我不知道我将收到的论据。

我的目标是更新现有密钥的值,然后添加不在文档中的密钥。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:7)

您想使用$set运算符。

这样做只会更新更新查询中发送的密钥。没有$set,它将覆盖整个对象,这显然不是你想要的。

app.patch('/user/:id', function (req, res) {
    var updateObject = req.body; // {last_name : "smith", age: 44}
    var id = req.params.id;
    db.users.update({_id  : ObjectId(id)}, {$set: updateObject});
});

我在这里做了几件事:

  1. 您正在使用快递。
  2. 您使用的是mongodb驱动程序或mongojs npm模块