Я новичок в mgo, и мне понадобится некоторая помощь в этом: я могу успешно подключиться и распечатать имя БД, название коллекции и номер элемента коллекции, но не знаю, как распечатать содержимое и написать обратно.Что было бы эквивалентно в mgo приведенным ниже командам оболочки mongodb?
- db.coll.find()
- document=({"user_id" : "xxx","password" :"xxx"....});
- db.coll.insert(document)
//////////////////////////////////////////////////////////////////////////
package main
import (
"fmt"
"time"
"gopkg.in/mgo.v2"
)
//const MongoDb details
const (
hosts = "mongodb.xxx:27017"
database = "myinfo"
username = "xxxxx"
password = "start123"
collection = "userdetails"
)
func main() {
info := &mgo.DialInfo{
Addrs: []string{hosts},
Timeout: 60 * time.Second,
Database: database,
Username: username,
Password: password,
}
session, err1 := mgo.DialWithInfo(info)
if err1 != nil {
panic(err1)
}
col := session.DB(database).C(collection)
datab := session.DB(database)
count, err2 := col.Count()
if err2 != nil {
panic(err2)
}
fmt.Println("Database Name:", datab.Name)
fmt.Println("Collection FullName:", col.FullName)
fmt.Println(fmt.Sprintf("Documents count: %d", count))
}
Вот версия, которая работает:
package main
import (
"fmt"
"time"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
//const MongoDb details
const (
hosts = "xxx:27017"
database = "myinfo"
username = "xxxx"
password = "start123"
collection = "userdetails2"
)
type UserDetails struct {
_id bson.ObjectId `bson:"_id,omitempty"`
name string
phone string
}
func main() {
info := &mgo.DialInfo{
Addrs: []string{hosts},
Timeout: 60 * time.Second,
Database: database,
Username: username,
Password: password,
}
session, err1 := mgo.DialWithInfo(info)
if err1 != nil {
panic(err1)
}
col := session.DB(database).C(collection)
datab := session.DB(database)
count, err2 := col.Count()
if err2 != nil {
panic(err2)
}
fmt.Println("Database Name:", datab.Name)
fmt.Println("Collection FullName:", col.FullName)
fmt.Println(fmt.Sprintf("Documents count: %d", count))
var userDetail []bson.M
_ = col.Find(nil).All(&userDetail)
for _, v := range userDetail {
fmt.Println(v)
}
}