安裝
1.下載地址
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi
2.若是報沒有權限的錯,將配置文件的.cfg的最後一行的mp:刪除
3.4.0版本已將mongodb加入了系統服務,開機自啓
win+R>>>服務>>>mongodb
4.此時沒有任何的權限限制,默認是管理員
5.在.cfg文件中修改
security:
authorization: enabled
# 注意縮進
6.重啓服務
7.mongo >>>>show dbs(未登錄沒有任何庫顯示)
8.登錄 use admin
db.auth("root","root")>>>>>1登錄成功後顯示1
show dbs>>>登錄成功後顯示全部庫
庫的操做
建立數據庫
use 數據庫名稱 #若是數據庫存在切換,若是不存在新建並切換
#新建的庫裏沒有沒有數據,使用show dbs是不會顯示的
查看數據庫
show dbs
刪除數據庫
db.dropDatabase()
#區分大小寫
集合的操做(至關於mysql的表)
use 數據庫 先切到數據庫
#建立集合
db.user
#查看集合
show collections or show tables#與庫相同,集合中沒有數據不會顯示
#刪除集合:
db.blog.user.drop()
數據類型
#null:用於表示空或不存在的字段
{"x":null}
#布爾型:true 和 false
{"x":true,"y":fasle}
#數值
{"x":3,"y":3.1414}
#字符串
{"name":"egon"}
#日期
d = {"x":new Date()}
d.x.getHours()
#正則表達式/ /
d={'pattern':/^egon.*?nb$/i}
#數組
d={'x':[1,'a','v']}
#內嵌文檔
user={'name':'jerry','addr':{'country':'China','city':'YT'}}
user.addr.country
#對象id:是一個12字節的ID,是文檔的惟一標識,不可變
d={'x':ObjectId()}
#案例:
db.test.insert({"a":null,"b":1.1,"c":true,"d":100,"e":"aaaaaa","f":new Date(),"g":/^jerry.*nice$/i,"h":[1,2],"j":{"name":"smallJerry"}})
db.tb.find()
db.tb.find().pretty() # 格式化顯示 findOne沒有pretty()方法
文檔操做
#沒有指定_id則默認ObjectID,_id不能重複,且在插入後不可變
#插入單條
db.test.insert({"_id":1,"name":"zb","age":18})
#無則插入,有則覆蓋
db.test.save()
#插入多條
db.test.insertMany([{"_id":2,"name":"egon","age":28},{"_id":3,"name":"yhh","age":38}])
查詢數據
#cmd清屏 cls
#find
查詢全部匹配數據
#findOne
查找第一個匹配的
比較運算
use db
db.表名.find(條件)
比較運算
#等於
= >>>> {"name":"zb"}
db.test.find({"name":"zb"})
#不等於
!= >>>>{"name":{"$ne":"zb"}}
db.test.find({"name":{"$ne":"zb"}})
#大於
> >>>>{"_id":{"$gt":1}}
db.test.find({"_id":{"$gt":1}})
#大於等於
>= >>>>{"_id":{"$gte":1}}
db.test.find({"_id":{"$gte":1}})
#小於
< >>>>{"_id":{"$lt":3}}
db.test.find({"_id":{"$lt":3}})
#小於等於
<= >>>>{"_id":{"lte":3}}
db.test.find({"_id":{"$lte":3}})
邏輯運算
#and 逗號分隔,多個條件就是and
db.test.find({"_id":{"$lt":3,"$gt":1}})
db.test.find({"_id":{"$lte":3,"$gt":1},"name":"egon"})
#or
db.test.find({"$or":[{'_id':{"$gte":3}},{"name":"zb"}]})
#偶數 mod
db.test.find({'_id':{"$mod":[2,1]}})#[2,1]>>除2餘1
#not
db.test.find({'_id':{"$not":{"$mod":[2,1]}}})
成員運算
#in
db.test.find({"_id":{"$in":[1,3]}})
#not in
db.test.find({"_id":{"$nin":[1,3]}})
正則表達式
db.test.find({"name":/.*?z.*?/})
正則寫在//內,後面的i表明:
i 忽略大小寫
m 多行匹配模式
x 忽略非轉義的空白字符
s 單行匹配模式
指定字段
#db.user.finde({過濾條件},{顯示字段})
db.test.find({'_id':3},{'_id':0,'name':1})
0表示不顯示 默認爲0 1爲顯示 "_id"默認爲1
查詢數組
#準備數據
use test1
db.user
user1 = {"_id":1,"name":"egon","hobbies":["play","girl","music","run"]}
user2 = {"_id":2,"name":"alex","hobbies":["swim","girl","drink","tea"]}
user3 = {"_id":3,"name":"yhh","hobbies":["girl","tea","fight","run"]}
user4 = {"_id":4,"name":"aaa","hobbies":["run","girl","chicken","ball"]}
db.user.insert(user1)
db.user.insert(user2)
db.user.insert(user3)
db.user.insert(user4)
#查詢
#查詢愛好有girl的人
db.user.find({'hobbies':'girl'})
#查詢愛好girl和drink的人
db.user.find({"hobbies":{"$all":["girl","drink"]}})
#查詢第4個愛好爲tea的人
db.user.find({"hobbies.3":"tea"})
#查詢全部人最後兩個愛好
db.user.find({},{'hobbies':{"$slice":-2}})
#查詢全部人的第2個到第3個愛好
db.user.find({},{"hobbies":{"$slice":[1,2]}})
其餘
# 排序:1表明升序,-1表明降序
db.user.find().sort({"_id":-1})
db.user.find().sort({"name":-1,'_id':-1})
#分頁:limit表明取多少個document,skip表明跳過前幾個document
db.user.find({'hobbies':'girl'}).limit(1).skip(2)
#獲取數量
db.user.count({'hobbies':'girl'})
db.user.find({'hobbies':'girl'}).count()
#{'key':null} 匹配key的值爲null或者沒有這個key
#準備數據
db.t2.insert({'a':10,'b':111})
db.t2.insert({'a':20})
db.t2.insert({'b':null})
#查詢結果
> db.t2.find({"b":null})
{ "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 }
{ "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }