0%

MongoDB学习笔记

简介

性能

和mysql的对比压力测试:链接

安装

mongodb官方下载地址,archlinux下的安装教程提供了编译和二进制两种方式,编译需要180G空间,长达7小时。也可以使用AUR的mongodb-bin二进制包。

出于偷懒考虑,直接yaourt -S mongodb-bin

启动:sudo systemctl start mongodb --now,此时使用netstat -ntl可以看到27017端口开启,这是mongodb的默认端口,mongo测试链接,成功进入交互命令行。

$ mongod # 启动服务
$ mongo # 链接服务器

> db.version() #查看版本
4.2.1

> show dbs # 查看数据库
admin 0.000GB
config 0.000GB
local 0.000GB

> use admin # 使用admin数据库
switched to db admin

> show collections # 显示数据库中的集合
system.version

> db # 显示当前所在/所操作的数据库的名称
admin

> var x = "hello world" # 类似js的交互语言
> print(x) # 输出x
> function f{ # 定义函数
return "hello"
}
> f() # 调用函数

与关系型数据库的不同

关系型数据库中是数据库->数据表->数据行;mongodb中是数据库->集合->文件

基本操作,增删改查

> use user # 使用user数据库
switched to db user
> db.user.insert({"name":"xuranus"})
WriteResult({ "nInserted" : 1 })
> db # 当前数据库
user
> show collections # 全部集合
user
> db.user.find() # 显示所有数据
{ "_id" : ObjectId("5ddbcab8f1ae00ea8f055405"), "name" : "xuranus" }
> db.user.findOne() # 显示第一条数据,mongodb的命名为小驼峰式的
{ "_id" : ObjectId("5ddbcab8f1ae00ea8f055405"), "name" : "xuranus" }
> db.user.update({"name":"xuranus"},{"name":"thankod","age":10}) # 修改数据
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find()
{ "_id" : ObjectId("5ddbcab8f1ae00ea8f055405"), "name" : "thankod", "age" : 10 }
> db.user.remove({"name":"thankod"}) # 条件删除数据
WriteResult({ "nRemoved" : 2 })
> db.user.find() # 没有数据了
> db.user.drop() # 删除整个集合
true
> show collections # 此时user库中没有user集合了
> show dbs # 因为user库中一个集合也没有了,所以user库也自动删除了
admin 0.000GB
config 0.000GB
local 0.000GB
> db.dropDatabase() # 直接删除当前的数据库,使用前移动要db看看当前数据库是哪个!

执行js脚本

创建一个js文件,task.js:

var userName = "xuranus"
var timestamp = Date.parse(new Date())
var jsonData = {"loginName":userName,"loginTime":timestamp}
var db = connect('log') //use log
db.login.insert(jsonData)
print('log success')

命令行执行:mongo task.js:
MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("14f58612-0235-431c-a28c-9d6a1ab3ae54") }
MongoDB server version: 4.2.1
connecting to: mongodb://127.0.0.1:27017/log
Implicit session: session { "id" : UUID("83cc2a49-8ce8-456e-ab03-b043e6074617") }
MongoDB server version: 4.2.1
log success

进入查看结果,插入成功:
> use log
switched to db log
> db.login.find()
{ "_id" : ObjectId("5ddbd169eb6a4cd920e6a7a2"), "loginName" : "xuranus", "loginTime" : 1574687081000 }

不能使用let声明变量,一定要用var!

技术胖 P5开始-》

Disqus评论区没有正常加载,请使用科学上网