Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pemacu MongoDB GO menimpa data sedia ada

Pemacu MongoDB GO menimpa data sedia ada

WBOY
WBOYke hadapan
2024-02-08 23:00:35911semak imbas

MongoDB GO 驱动程序覆盖现有数据

editor php Banana membawakan pengenalan pemacu GO MongoDB baharu yang meliputi data sedia ada. Sebagai pangkalan data NoSQL yang popular, MongoDB semakin popular di kalangan pembangun. Pemacu baharu ini menyediakan cara yang fleksibel dan cekap untuk memanipulasi data dalam MongoDB. Ia menyokong pelbagai operasi pertanyaan dan kemas kini sambil turut menyediakan ciri lanjutan seperti pemprosesan transaksi dan pengagregatan data. Dengan menggunakan pemacu ini, pembangun boleh berinteraksi dengan mudah dengan MongoDB dalam projek GO, membolehkan pembangunan pesat dan prestasi tinggi. Sama ada projek baharu atau sedia ada, pemacu ini menyediakan pembangun pengalaman manipulasi data yang lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, pemandu ini akan menjadi pilihan terbaik anda.

Kandungan soalan

Saya menggunakan go-fiber 并使用 mongodb pemandu mongodb go. Saya hanya mahu mengemas kini medan yang diberikan oleh badan. Tetapi ia menimpa data.

func UpdateOneUser(c *fiber.Ctx) error {
    params := c.Params("id")
    body := new(models.User)
    
    id, err := primitive.ObjectIDFromHex(params)
    if err != nil {
        return c.Status(500).SendString("invalid onjectid")
    }

    if err := c.BodyParser(&body); err != nil {
        return c.Status(400).SendString("invalid body")
    }
    
    filter := bson.M{"_id": id}
    update := bson.M{"$set": bson.M{
        "name": body.Name,
        "username": body.Username,
        "first_name": body.FirstName,
        "last_name": body.LastName,
        "email": body.Email,
        "phone_number": body.PhoneNumber,
        "contry": body.Contry,
        "age": body.Age,
        "child_accounts": body.ChildAccounts,
        "groups": body.Groups,

    }}
    
    result, err := db.User.UpdateOne(context.Background(), filter, update)
    if err != nil {
        return c.Status(500).SendString("user not found")
    }
    fmt.Println(result)

    return c.JSON(body)

}

Jika begini cara pemandu berfungsi, sila beritahu saya cara yang lebih baik untuk mengemas kini dokumentasi.

Penyelesaian

$set pengendali akan meliputi semua medan yang anda tentukan, jadi anda perlu membina kenyataan kemas kini anda secara selektif:

fields:=bson.m{}
if body.name!="" {
   fields["name"]=body.name
}
...
update:=bson.m{"$set":fields}

Beberapa jalan pintas yang boleh anda gunakan:

fields:=bson.M{}
add:=func(key,value string) {
   if value!="" {
      fields[key]=value
   }
}
add("name",body.Name)
add("userName",body.UserName)

Atas ialah kandungan terperinci Pemacu MongoDB GO menimpa data sedia ada. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam