Arrays 如何使用go从mongoDB数组中获取所有元素?
我对mongodb和golang很陌生。其中有一个名为myplace的集合,一个名为region的字段,它是一个值数组,用于检索整个数组 我的收藏品看起来像Arrays 如何使用go从mongoDB数组中获取所有元素?,arrays,mongodb,go,Arrays,Mongodb,Go,我对mongodb和golang很陌生。其中有一个名为myplace的集合,一个名为region的字段,它是一个值数组,用于检索整个数组 我的收藏品看起来像 { "_id" : ObjectId("5474227309d76eb732acd134"), "City" : "some city", "region" : [ { "regionid" : "31", "historical_place" : "temple" }, {
{
"_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))
}
使用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))
}
回答得很好。另外,请查看转换帮助。回答得很好。此外,请查看转换帮助。