golang查询mongo
李中冰 2023-07-11编程经验
介绍Go语言具有卓越的并发编程特性和性能,而MongoDB是一种流行的、高性能的NoSQL数据库,它的部署和横向扩展是非常容易的,这使得它在现代应用程序中非常有用,本篇文章中我们将学
介绍
Go语言具有卓越的并发编程特性和性能,而MongoDB是一种流行的、高性能的NoSQL数据库,它的部署和横向扩展是非常容易的,这使得它在现代应用程序中非常有用,本篇文章中我们将学习使用Go语言进行MongoDB的查询。在本文中,我们将使用mongod驱动程序。
连接MongoDB
为了使用mongoDb,首先我们需要安装MongoDB驱动,go get命令可用于直接从命令行进行安装,下面让我们来安装mysql驱动和连接数据库:
package main
import (
"gopkg.in/mgo.v2"
"log"
)
const (
DBHost = "localhost:27017"
)
func main() {
//创建连接
session, err := mgo.Dial(DBHost)
if err != nil {
panic(err)
}
defer session.Close()
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
//我们现在已经成功连接到了MongoDB。
log.Println("Connected to MongoDB!")
}
查询数据
使用mgo库查询数据非常简单,您只需要指定想要查询的数据库和集合的名称,然后使用Find()函数。在Find()函数后面可以使用可选参数Sort()
、Lmit()
和Skip()
,以获取有序的数据或限制返回的文档数量。
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
)
const (
DBHost = "localhost:27017"
DBName = "test"
DBUser = "root"
DBPass = "root"
)
type Person struct {
Name string
Age int
Location string
}
func main() {
//连接Mongodb
session, err := mgo.Dial(DBHost)
if err != nil {
panic(err)
}
defer session.Close()
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
//获取集合
collection := session.DB(DBName).C("people")
//定义筛选条件
query := bson.M{"age": bson.M{"$gte": 18}}
//查询
var results []Person
err = collection.Find(query).All(&results)
if err != nil {
panic(err)
}
//获取结果
for i, result := range results {
fmt.Println(i, result)
}
}
删除数据
想要删除一个文档或者匹配一些特定的条件时,mgo驱动程序为您提供了Remove()
函数。您可以使用多种不同的条件来删除文档,这在MongoDB中是非常方便的。
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
)
const (
DBHost = "localhost:27017"
DBName = "test"
DBUser = "root"
DBPass = "root"
)
type Person struct {
Name string
Age int
Location string
}
func main() {
//连接Mongodb
session, err := mgo.Dial(DBHost)
if err != nil {
panic(err)
}
defer session.Close()
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
//获取集合
collection := session.DB(DBName).C("people")
//定义筛选条件
query := bson.M{"age": bson.M{"$gte": 18}}
//删除文档
info, err := collection.RemoveAll(query)
if err != nil {
panic(err)
}
fmt.Println(info)
}
更新数据
使用mgo驱动程序,我们可以很容易地更新MongoDB中的文档。您可以使用Update()
函数来修改一个现有文档。mgo库在Update()
方法后面提供了一系列可选的参数,这些可选参数非常有用,以控制您的数据更新。
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
)
const (
DBHost = "localhost:27017"
DBName = "test"
DBUser = "root"
DBPass = "root"
)
type Person struct {
Name string
Age int
Location string
}
func main() {
//连接Mongodb
session, err := mgo.Dial(DBHost)
if err != nil {
panic(err)
}
defer session.Close()
// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)
//获取集合
collection := session.DB(DBName).C("people")
//定义筛选条件和修改文档
query := bson.M{"name": "Tom"}
update := bson.M{"$set": bson.M{"location": "Beijing"}}
//更新文档
err = collection.Update(query, update)
if err != nil {
panic(err)
}
//验证结果
results := Person{}
err = collection.Find(query).One(&results)
if err != nil {
panic(err)
}
fmt.Println(results)
}
很赞哦! ()