Bagaimanakah cara saya menyimpan struct Go bersarang dengan mgo sambil mengekalkan strukturnya dalam MongoDB?

Mary-Kate Olsen
Lepaskan: 2024-11-04 18:21:02
asal
521 orang telah melayarinya

How do I store nested Go structs with mgo while maintaining their structure in MongoDB?

Menyimpan Struktur Bersarang dengan mgo

Apabila cuba menyimpan struct Go bersarang sebagai dokumen MongoDB menggunakan mgo, pengguna mungkin menghadapi masalah dengan struktur yang diratakan. Walaupun fungsi json.Marshal boleh menghasilkan struktur rata yang diingini, ia menyimpan data sebagai binari apabila dimasukkan ke dalam MongoDB.

Untuk mengekalkan struktur bersarang semasa upserting, mgo menyediakan teg medan bson:",inline". Teg ini menyelaraskan struct bersarang, menyebabkan medannya dianggap sebagai sebahagian daripada struct luar. Sebagai contoh, pertimbangkan struct bersarang yang dipermudahkan berikut:

<code class="go">type Square struct {
    Length int 
    Width int
}

type Cube struct {
    Square
    Depth int
}</code>
Salin selepas log masuk

Dengan menambahkan tag bson:",inline" pada medan Square, struct ditakrifkan seperti berikut:

<code class="go">type Cube struct {
    Square `bson:",inline"`
    Depth  int
}</code>
Salin selepas log masuk

Apabila dimasukkan ke dalam MongoDB menggunakan mgo, data kini akan mempunyai struktur rata yang diingini:

<code class="json">{
     "Length":2,
     "Width":3,
     "Depth":4
}</code>
Salin selepas log masuk

Pendekatan ini membolehkan pengguna mengekalkan kebolehbacaan dan struktur kod Go mereka sambil berjaya menyimpan struct bersarang dalam MongoDB.

Atas ialah kandungan terperinci Bagaimanakah cara saya menyimpan struct Go bersarang dengan mgo sambil mengekalkan strukturnya dalam MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan