gpt4 book ai didi

arrays - 如何使用go从mongoDB数组中获取所有元素?

转载 作者:IT王子 更新时间:2023-10-29 01:55:32 26 4
gpt4 key购买 nike

我对 mongodb 和 golang 很陌生。我在其中有一个名为“myplace”的集合,一个名为 region 的字段是一个值数组,我们如何检索整个数组。

我的收藏看起来像

{
"_id" : ObjectId("5474227309d76eb732acd134"),
"City" : "some city",
"region" : [
{
"regionid" : "31",
"historical_place" : "temple"

},
{
"regionid" : "32",
"historical_place" : "temple"
},
{
"regionid" : "33",
"historical_place" : "temple"

}
]
}

期待输出

 [
{
"City": "Some CIty",
"region":[
{
"regionid" : "31",
"historical_place" : "temple"

},
{
"regionid" : "32",
"historical_place" : "temple"
},
{
"regionid" : "33",
"historical_place" : "temple"

}
]
}
]

有什么解决办法吗?

最佳答案

使用 bson 标签创建结构并使用 mgo 的 Find().All()。如果您需要 JSON 输出,请使用 encoding/json 包和 MarshalIndent() 函数:

package main

import (
"encoding/json"
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
)

type City struct {
ID bson.ObjectId `bson:"_id,omitempty" json:"-"`
Name string `bson:"City"`
Region []Place `bson:"region"`
}

type Place struct {
RegionID string `bson:"regionid"`
HistPlace string `bson:"historical_place"`
}

func main() {
session, err := mgo.Dial("127.0.0.1")
if err != nil {
panic(err)
}
defer session.Close()

c := session.DB("db").C("myplaces")

var cities []City
err = c.Find(nil).All(&cities)
if err != nil {
log.Fatal(err)
}

out, err := json.MarshalIndent(cities, " ", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println("Result:", string(out))
}

关于arrays - 如何使用go从mongoDB数组中获取所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27165692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com