1. 程式人生 > >MongoDB基礎命令雜記

MongoDB基礎命令雜記

MongoDB 安裝 基礎命令

一、MongoDB安裝使用

1、安裝啟動MongoDB

1.1 下載安裝

官網:
https://www.mongodb.com/

rpm下載地址:
http://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/

[root@master1 ~]# ls mongodb-3.0.0/
mongodb-org-3.0.0-1.el7.x86_64.rpm
mongodb-org-mongos-3.0.0-1.el7.x86_64.rpm
mongodb-org-server-3.0.0-1.el7.x86_64.rpm
mongodb-org-shell-3.0.0-1.el7.x86_64.rpm
mongodb-org-tools-3.0.0-1.el7.x86_64.rpm

暫時不需要分片功能(mongos),只安裝這三個包:
[root@master1 mongodb-3.0.0]# yum install mongodb-org-server-3.0.0-1.el7.x86_64.rpm mongodb-org-shell-3.0.0-1.el7.x86_64.rpm mongodb-org-tools-3.0.0-1.el7.x86_64.rpm 

查看包組相關信息:
[root@master1 ~]# rpm -qi mongodb-org-server

查看包組生成的文件:
[root@master1 ~]# rpm -ql mongodb-org-server

1.2 配置,啟動

創建數據存放目錄:
[root@master1 ~]# mkdir -pv /mongodb/data
[root@master1 ~]# chown -R mongod:mongod /mongodb/

配置
[root@master1 ~]# vim /etc/mongod.conf 

dbpath=/mongodb/data

#註釋掉監聽地址後,默認監聽在0.0.0.0地址上
#bind_ip=127.0.0.1

#開啟WEB監聽
httpinterface=true
rest=true

啟動服務:
[root@master1 ~]# systemctl start mongod

服務啟動後初始化的數據文件:
[root@master1 ~]# ls /mongodb/data/
journal  local.0  local.ns  mongod.lock  storage.bson  _tmp

訪問web接口:http://10.201.106.131:28017/

技術分享圖片

1.3 客戶端連接

獲取客戶端命令使用幫助:
[root@master1 ~]# mongo -h

連接:
[root@master1 ~]# mongo --host 10.201.106.131

顯示當前有多少個數據庫:
> show dbs

MongoDB可以不創建數據庫,直接使用(在庫裏面創建表後,庫會自動創建出來,延時創建):
> use testdb
switched to db testdb
> show dbs
local  0.078GB

2、MongoDB基本使用

2.1 基本操作

獲取幫助:
> help

顯示用戶(默認沒有開啟認證信息):
> show users

顯示已存在的數據庫
> show dbs

顯示當前庫的collections(名稱列表)
> show collections

查看可以用在db級別的命令:
> db.help()

2.2 db命令

查看當前數據庫信息:
> db.stats()

查看數據庫版本號:
> db.version()

查看服務器級別狀態信息
> db.serverStatus()

顯示當前庫內的所有名稱列表:
> db.getCollectionNames()

3、CRUD語句

3.1 創建

創建collection並插入數據
> db.students.insert({name:"tom",age:23})
WriteResult({ "nInserted" : 1 })

查看collection:
> show collections
students
system.indexes
同時自動創建了數據庫:
> show dbs;
local   0.078GB
testdb  0.078GB

查看collection狀態信息:
> db.students.stats()

查看庫裏的collection:
> db.getCollectionNames()
[ "students", "system.indexes" ]

繼續在students插入數據:
> db.students.insert({name:"jerry",age:40,gender:"M"})
WriteResult({ "nInserted" : 1 })

3.2 文檔(collection)操作

獲取文檔操作命令:
> db.mycollect.help()

查看一個命令的使用幫助:
> db.mycollect.find().help()

查看collection裏面的文檔:
> db.students.find()
{ "_id" : ObjectId("587bc5e2a954a5d5a876fb24"), "name" : "tom", "age" : 23 }
{ "_id" : ObjectId("587bd2f0a954a5d5a876fb25"), "name" : "jerry", "age" : 40, "gender" : "M" }

統計collection裏面的文檔個數
> db.students.count()
2

多插入幾個數據
> db.students.insert({name:"Ou Yangfeng",Age:90,Course:"HaMegong"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({name:"Yang Guo",Age:20,Course:"Meinv Quan"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({name:"Guo Jing",Age:40,Course:"Xianglong Shibazhang"})
WriteResult({ "nInserted" : 1 })

3.3 查詢(find)

查詢年齡大於30的記錄:
> db.students.find({Age: {$gt: 30}})
{ "_id" : ObjectId("587bd99ea954a5d5a876fb26"), "name" : "Ou Yangfeng", "Age" : 90, "Course" : "HaMegong" }
{ "_id" : ObjectId("587bd9f4a954a5d5a876fb28"), "name" : "Guo Jing", "Age" : 40, "Course" : "Xianglong Shibazhang" }

查找年齡20和40的記錄:
> db.students.find({Age:{$in: [20,40]}})
{ "_id" : ObjectId("587bd9bfa954a5d5a876fb27"), "name" : "Yang Guo", "Age" : 20, "Course" : "Meinv Quan" }
{ "_id" : ObjectId("587bd9f4a954a5d5a876fb28"), "name" : "Guo Jing", "Age" : 40, "Course" : "Xianglong Shibazhang" }

查找年齡不是20和40的記錄:
> db.students.find({Age:{$nin: [20,40]}})

$or: 或運算,語法格式{$or: [{<expression1>},{...}]}
$and: 與運算
$not:非運算
$nor:反運算,返回不符指定條件的所有文檔

查找Age=20,40或者age=20,40的記錄
> db.students.find({$or:[{Age:{$in: [20,40]}},{age:{$in: [20,40]}}]})
{ "_id" : ObjectId("587bd2f0a954a5d5a876fb25"), "name" : "jerry", "age" : 40, "gender" : "M" }
{ "_id" : ObjectId("587bd9bfa954a5d5a876fb27"), "name" : "Yang Guo", "Age" : 20, "Course" : "Meinv Quan" }
{ "_id" : ObjectId("587bd9f4a954a5d5a876fb28"), "name" : "Guo Jing", "Age" : 40, "Course" : "Xianglong Shibazhang" }

查看有Gender字段的文檔:
> db.students.find({gender: {$exists: true}})
{ "_id" : ObjectId("587bd2f0a954a5d5a876fb25"), "name" : "jerry", "age" : 40, "gender" : "M" }

3.4 更新

文檔操作幫助:
> db.mycoll.help()

下面命令默認只更新一個文檔(一行),如需更新整個collection要加multi_bool參數
db.mycoll.update()

修改tom的年齡為21:
> db.students.update({name:"tom"},{$set: {age: 21}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.find({name:"tom"})
{ "_id" : ObjectId("587bc5e2a954a5d5a876fb24"), "name" : "tom", "age" : 21 }

修改age字段名為Age:
原始數據:
> db.students.find({age: {$exists: true}})
{ "_id" : ObjectId("587bc5e2a954a5d5a876fb24"), "name" : "tom", "age" : 21 }
{ "_id" : ObjectId("587bd2f0a954a5d5a876fb25"), "name" : "jerry", "age" : 40, "gender" : "M" }
修改:
> db.students.update({},{$rename: {"age": "Age"}},false,true)
WriteResult({ "nMatched" : 5, "nUpserted" : 0, "nModified" : 2 })

3.5 刪除

刪除年齡為21的文檔(行):
> db.students.remove({Age: 21})

刪除collection(類似刪除整張表):
> db.teachers.drop()
true

刪除當前數據庫:
> db.dropDatabase()

> show dbs
local  0.078GB

3.6 其他

統計查詢個數:
> db.students.find({Age: {$in: [20,40]}})
{ "_id" : ObjectId("587bd2f0a954a5d5a876fb25"), "name" : "jerry", "gender" : "M", "Age" : 40 }
{ "_id" : ObjectId("587bd9bfa954a5d5a876fb27"), "name" : "Yang Guo", "Course" : "Meinv Quan", "Age" : 20 }
{ "_id" : ObjectId("587bd9f4a954a5d5a876fb28"), "name" : "Guo Jing", "Course" : "Xianglong Shibazhang", "Age" : 40 }
> db.students.find({Age: {$in: [20,40]}}).count()
3

只顯示一行
> db.students.find({Age: {$in: [20,40]}}).limit(1)
{ "_id" : ObjectId("587bd2f0a954a5d5a876fb25"), "name" : "jerry", "gender" : "M", "Age" : 40 }

跳過第一行,後顯示剩余行:
> db.students.find({Age: {$in: [20,40]}}).skip(1)
{ "_id" : ObjectId("587bd9bfa954a5d5a876fb27"), "name" : "Yang Guo", "Course" : "Meinv Quan", "Age" : 20 }
{ "_id" : ObjectId("587bd9f4a954a5d5a876fb28"), "name" : "Guo Jing", "Course" : "Xianglong Shibazhang", "Age" : 40 }

符合條件時只顯示其中一個:
> db.students.findOne({Age: {$gt: 10}})
{
    "_id" : ObjectId("587bd2f0a954a5d5a876fb25"),
    "name" : "jerry",
    "gender" : "M",
    "Age" : 40
}

MongoDB基礎命令雜記