Mongo:投影不影响布尔值

Mongo: projection not affecting booleans

我注意到我可以将投影设置为不是 return 我的 usernameuserID 字符串而不会出现问题。但是,当尝试不 return deactivatedadmin 布尔值时,即使其他字符串不会出现,它们仍然会出现?

    user := model.User{}
    filter := bson.D{
        {
            Key:   "_id",
            Value: userID,
        },
    }
    projection := bson.D{
        {
            Key:   "password",
            Value: 0,
        },
        {
            Key:   "username",
            Value: 0,
        },
        {
            Key:   "_id",
            Value: 0,
        },
        {
            Key:   "deactivated",
            Value: 0,
        },
        {
            Key:   "admin",
            Value: 0,
        },
    }
    options := options.FindOne().SetProjection(projection)
    _ = usersCol.FindOne(ctx, filter, options).Decode(&user)

&{ false false [0xc00028d180] 0xc0002b0900 0xc0002bdce0 <nil>}

type User struct {
    ID           string          `json:"id" bson:"_id"`
    Admin        bool            `json:"admin"`
    Deactivated  bool            `json:"deactivated"`
    Username     string          `json:"username"`
    Password     string          `json:"password"`
    ...
}

您看到的值是结构字段的默认值。我建议您使用指向 User:

字段的指针
type User struct {
    ID           string           `json:"id" bson:"_id"`
    Admin        *bool            `json:"admin"`
    Deactivated  *bool            `json:"deactivated"`
    Username     string           `json:"username"`
    Password     string           `json:"password"`
    ...
}

在此示例中,值为 nil