使用mongodb更新哈希密码

使用mongodb更新哈希密码,mongodb,go,mongodb-query,aggregation-framework,Mongodb,Go,Mongodb Query,Aggregation Framework,我试图更新我的用户文档以更改密码,但当我将bcrypt哈希密码作为$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a传递时,mongodb忽略字段密码 如果我删除第一个可用的$ 我的更新功能 func (r Repo) Update(id string, updUsr interface{}) (User, error) { // uid work filter := bson.M{"_id&quo

我试图更新我的用户文档以更改密码,但当我将bcrypt哈希密码作为
$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a传递时,mongodb忽略字段密码

如果我删除第一个可用的
$

我的更新功能

func (r Repo) Update(id string, updUsr interface{}) (User, error) {
    // uid work

    filter := bson.M{"_id": bson.M{"$eq": uid}, "deleted_at": nil}
    update := []bson.D{
        {primitive.E{
            Key:   "$set",
            Value: updUsr,
        }},
        {primitive.E{
            Key: "$addFields",
            Value: bson.D{primitive.E{
                Key:   "modified_at",
                Value: time.Now(),
            }},
        }},
    }

    res := r.col.FindOneAndUpdate(
        r.ctx,
        filter,
        update,
    )
    if res.Err() != nil {
        // err
    }

    // decode work

    return u, nil
}
我的更新函数调用

// doesn't work
updPwd := password{
    Password: "$2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a",
}

// working version 
updPwd := password{
    Password: "2a$10$lnTLIgnOWuoolOkqBfzcd.0pNLFtstX20p8KJNQmKkL.6D.W7Zu0a",
}

_, err = us.Update(uid, updPwd)
if err != nil {
    // err
}
我不知道如何将我的散列变量传递给mongodb,实际上这只是删除我的密码密钥,因为我处理的密码是空值,如果删除第一个
$
符号,则我的更新成功

每一篇评论都很感谢


感谢

在更新操作中,以美元符号开头的字符串值将被视为变量引用,并替换为相应的值


您可能需要使用运算符将该字符串视为一个值而不是一个变量。

发布更新失败返回的错误。@OptimusPette我没有错误,只需在更新密码时从文档中删除我的密钥密码即可:“谢谢@Joe,我5分钟前刚在文档中看到过。祝您愉快