Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah cara saya menyimpan struct Go bersarang dengan mgo sambil mengekalkan strukturnya dalam MongoDB?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 18:21:02467semak imbas

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>

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

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

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>

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!

Kenyataan:
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