Node.js MongoDB无法$unset特定字段;末尾的自动_id字段

Node.js MongoDB无法$unset特定字段;末尾的自动_id字段,node.js,mongodb,Node.js,Mongodb,我正在编写代码,通过一个网站使用NodeJS的普通MongoDB驱动程序来管理一组商家。我的麻烦发生在商人试图确认他们的帐户时。预计代码将使用$unset从数据库中删除值,从而激活商户帐户。相反,查询返回true,但确认字段保持不变。下面是数据库中一个有问题的商家的示例,由db.merchants.find({})打印(添加了换行符以提高可读性): …下面是我如何尝试取消设置“确认”字段: 我确信上面的update命令实际上正在执行 关于上面的数据,我认为有趣的一点是_id字段位于末尾。。。这应

我正在编写代码,通过一个网站使用NodeJS的普通MongoDB驱动程序来管理一组商家。我的麻烦发生在商人试图确认他们的帐户时。预计代码将使用$unset从数据库中删除值,从而激活商户帐户。相反,查询返回true,但确认字段保持不变。下面是数据库中一个有问题的商家的示例,由db.merchants.find({})打印(添加了换行符以提高可读性):

…下面是我如何尝试取消设置“确认”字段:

我确信上面的update命令实际上正在执行

关于上面的数据,我认为有趣的一点是_id字段位于末尾。。。这应该正常发生吗?这会不会弄乱update命令的$unset?如果这不是问题,那么问题是什么

提前谢谢你的帮助


编辑:我说明了为什么要使用单独的findOne请求,然后进行更新。

\u id
是ObjectId的一个特殊BSON对象。使用
id
字符串是不够的。您可能还想使用
\u id

db.collection("merchants").update({_id: ObjectId(user._id)},

您可能还需要使用
查找和修改

\u id
是ObjectId的特殊BSON对象。使用
id
字符串是不够的。您可能还想使用
\u id

db.collection("merchants").update({_id: ObjectId(user._id)},

您可能还想使用
查找并修改

您在
user.id
中漏掉了下划线,应该是
user.\u id
。现在,它正在尝试获取id为
未定义的用户

如果不是这样的话,你应该在email字段上进行更新,它会工作得很好(假设它是唯一的)


文档末尾的_id无关紧要,JSON/BSON字段中没有严格的顺序。维护订单的唯一时刻是在数组内部。

您在
user.id
中漏掉了下划线,应该是
user.\u id
。现在,它正在尝试获取id为
未定义的用户

如果不是这样的话,你应该在email字段上进行更新,它会工作得很好(假设它是唯一的)


文档末尾的_id无关紧要,JSON/BSON字段中没有严格的顺序。维护订单的唯一时刻是在阵列内部。

这似乎无助于。。。此外,我非常确定用户。\我使用的id已经是ObjectID类型。这似乎没有帮助。。。此外,我非常确定我使用的用户id已经是ObjectID类型。
db.collection("merchants").findOne({email: "test@test.com"}, function(err, user) {
    if(err) return handleError();
    if(!user) return sendFailureMessageToClient();
    if(client.confirm == user.confirm) {
        db.collection("merchants").update({_id: user.id},
            {$unset: {confirm: true}}, someCallback);
    }
}
db.collection("merchants").update({_id: ObjectId(user._id)},