Pemacu MongoDB GO menimpa data sedia ada

WBOY
Lepaskan: 2024-02-08 23:00:35
ke hadapan
884 orang telah melayarinya

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)

}
Salin selepas log masuk

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}
Salin selepas log masuk

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)
Salin selepas log masuk

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

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!