首页 > 解决方案 > mongodb / nodejs:findandmodify方法不起作用

问题描述

我有以下 json 数据,想根据条件更新值

{
    "_id" : ObjectId("5fce2d4c7b2ea2e79ercvju4"),
    "userId" : 1,
    "token": "jwt_token_value",
    "isActive" : 0,
    "__v" : 0
}
{
    "_id" : ObjectId("5fce2d4c7b2ea2e79ercvjk0"),
    "userId" : 1,
    "token": "jwt_token_value",
    "isActive" : 0,
    "__v" : 0
}
{
    "_id" : ObjectId("5fd0d45tjd82a02dd0f17fc4"),
    "userId" : 1,
    "token": "jwt_token_value",
    "isActive" : 1,
    "__v" : 0
}

我已经管理了如下的事情。

let update = await UserDetails.findAndModify(
    { userId: 1, token: token },
    [],
    {$set: { isActive: 0 }},
    { new: true }
);

=> 此查询应将最后一个 json 集合键更新isActive为 1。但它不会以任何方式更新值。我做错了什么?调试也不会给我带来任何错误。

我正在关注这个答案:https ://stackoverflow.com/a/24648693/5624578

标签: node.jsmongodbmongodb-query

解决方案


您可以包含查询标识符以指定每个部分的操作,如下所示:

let update = await UserDetails.findAndModify(
    query: { userId: 1, token: token },
    update: {$set: { isActive: 0 }},
    upsert: true
);

推荐阅读