Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何使用go从mongoDB数组中获取所有元素?_Arrays_Mongodb_Go - Fatal编程技术网

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

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" }, {

我对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))
}
使用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))
}

回答得很好。另外,请查看转换帮助。回答得很好。此外,请查看转换帮助。