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!