携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
RavenDB是基于C#实现的NoSQL,和使用率较高的MongoDB相比具有非常好看的可视化操作界面、较为方便的集群部署,不过在使用与集群部署方面有所限制,需要购买授权才能解锁集群部署上面的限制,若无集群部署的需求可以订阅免费的授权。本文将从以下几个方面阐述如何安装及使用RavenDB:
-
基于Docker安装RavenDB
-
基于Web页面操作RavenDB中的数据
-
Golang客户端安装
-
基于Golang模块操作RavenDB中的数据
安装
RavenDB官方提供了两套安装镜像(ravendb:ubuntu-latest\ravendb:windows-latest),推荐直接安装Linux环境的ubuntu-latest即可,服务的默认端口为8080
docker run -d -p 8080:8080 --name some-ravendb ravendb/ravendb:ubuntu-latest
基于Web页面操作RavenDB中的数据
访问127.0.0.1:8080
,第一次进入后按照系统提示配置数据库的基础信息,并进行授权操作,直到出现下图所示界面,则表示基础配置完成了
- 新建数据库
依次一下顺序 Databases->New database->在Name框中填写名称->Create
进行数据库的创建,如下图所示
- 新增文档
选中数据库后,点击New document
,再在弹出框中填写文档中的Json数据即可
- 删除文档
选中文档后,置灰的Delete
按钮会高亮显示,这个时候点击Delete
可对文档进行删除操作
golang 模块安装
官方提供了Golang的客户端,可用其进行数据的基础操作
go get github.com/ravendb/ravendb-go-client
基于golang 模块的基础使用
所有的操作都需要得到Session
对象,针对需要改变文档内容的部分则必须使用session.SaveChanges()
是操作生效
定义用于数据映射的结构体
type Article struct {
Title string
Content string
}
定义用于操作数据的公共部分store
store := ravendb.NewDocumentStore([]string{"http://127.0.0.1:8080"}, "")
if err := store.Initialize(); err != nil {
log.Fatal(err)
}
- 新增文档
使用Store
方法进行文档的保存
// blog 数据库名称
session, _ := store.OpenSession("blog")
// 保存数据
session.Store(&Article{
Title: "title",
Content: "content",
})
// 提交请求
err = session.SaveChanges()
session.Close()
- 查询文档
使用First
方法表示查询一条数据,GetResults
方法表示查询一批数据
session, _ := store.OpenSession("blog")
// Articles 集合名称
q := session.QueryCollection("Articles")
var first *Article
// 查询单条数据
q.First(&first)
fmt.Println(first)
session.Close()
- 修改文档
使用Load
和Store
方法结合,进行文档的更新
session, _ := store.OpenSession("blog")
article := &Article{}
// articles/97-A 文档ID
session.Load(&article, "articles/97-A")
article.Title = "Title-2"
session.Store(article)
session.SaveChanges()
session.Close()
- 删除文档
是通Load
和Delete
方法结合,进行文档的删除
session, _ := store.OpenSession("blog")
article := &Article{}
// articles/161-A 文档ID
session.Load(&article, "articles/161-A")
// 删除文档
session.Delete(article)
session.SaveChanges()
session.Close()