MongoDB數據庫

Mongodb

是一個非關係型數據庫 存儲形式爲鍵值對 水平擴展很容易 常做爲緩存數據庫來使用python

Mongodb的存儲文檔稱之爲 BSON 相似json對象 字段值能夠包含其餘的文檔 、數組 以及文檔數組mysql

MongoDB和mysql的概念解析
sql概念 mongodb的概念 解釋/說明
database database 數據庫
table collection 表/集合
row document 行/文檔
column field 列/域
table join 表關聯
primary key primary key 主鍵手動添加/自動建立

1、進入mongodb數據庫

(1) cd mongo的bin目錄

(2) 輸入 啓動服務 並選擇建立數據庫的位置

mongod.exe --dbpath=D:\db

(3) 再打開一個終端

cd mongodb的bin目錄sql

mongo.exemongodb

(4) 開放端口讓其餘人鏈接,須要關閉防火牆

mongod.exe --bind_ip 0.0.0.0數據庫

(5) 鏈接帶密碼的mongodb

mongo ip:port/database -u username -p password
mongo database --host x.x.x.x --port 31935 -u username -p passwordjson

2、數據庫的操做

(1) 查看全部數據庫

show dbs數組

(2) 建立/切換數據庫

use 數據庫名緩存

(3) 查看當前所在的數據庫

db.getName()code

(4) 建立集合
  1. db.createCollection(集合名)

    db.createCollection('user')對象

  2. db.集合名.insert(文檔)

    db.goods.insert({"goodsname":"牛奶"})

(5) 查看全部的集合

show collections

(6) 刪除集合

db.collection_name.drop()

若是遇到命名奇怪的集合,如數字名字的集合沒法刪除,可使用以下
db.getCollection('123').drop()

注意:

mongodb區分大小寫

(7) 修改集合名字

db.old_name.renameCollection("new_name")

3、數據的添加 INSERT

(1) insert 插入一條文檔

db.集合名.insert({文檔})

db.user.insert({'name':"張三",'age':18})

(2) insert插入多條文檔

列表中存放多條文檔

db.user.insert([{'name':'李四','age':20},{'name':'王五','age':25}])

3.XX 新的插入文檔

(1) 插入一條文檔

db.collection.insertOne()

db.user.insertOne({"name":"趙六","age":30})

(2) 插入多條文檔

db.collection.insertMany()

db.user.insertMany([{"name":"趙六","age":30},{"name":'王五',"age":22}])

插入多條文檔 無論是insert仍是insertMany 都須要使用列表

insertMany 若是不適用列表 則報錯

insert 插入多條不適用列表 則插入成功數據爲第一條文檔

4、update修改

主體結構

db.collection.update(

​ <query>, 查詢的條件

​ <update>, 要更改的東西

​ {

​ <upsert> bool值 若是修改的數據查詢不到 當前數據是否做爲新數據插入 默認Flase 不插入

​ <multi> bool 值 若是匹配到多條 默認是更改一條 Flase 改成True則所有更改

​ }

)

update: &dollar;set &dollar;inc 倆個更新操做符

$set 直接修改

$inc 累加修改

實例

不使用更新操做符 會將文檔的內容除了_id之外的內容替換成當前update的內容

db.user.update({"name":"張三"},{"age":38})

使用更新操做符號 &dollar;set 將年齡直接修改成30 其他當前文檔的內容不會發生改變

db.user.update({"name":"李四"},{$set:{"age":30}})

使用更新操做符號 &dollar;inc 將年齡值累加修改30 其他當前文檔的內容不會發生改變

db.user.update({"name":"李四"},{$inc:{"age":30}})

upsert參數的使用

db.user.update({"name":"張三"},{$set:{"age":30}},true)

{ "_id" : ObjectId("5b0f68068829170dea936f21"), "name" : "張三", "age" : 30 }
multi 的使用
db.user.update({"name":"趙六"},{$set:{age:10}},{multi:true})
完整的修改語句

db.user.update({"name":"趙六"},{$set:{age:18}},true,true)

3.xx之後的修改

db.collection.updateOne()

實例

db.user.updateOne({"age":18},{$set:{age:10}})

db.collection.updateMany()

實例

db.user.updateMany({"name":'趙六'},{$set:{age:12}})

5、remove 刪除

主體結構

db.collection.remove(
    <query>,  條件
    justOne,  bool值 默認flase 所有刪除
)

實例

刪除多條
db.user.remove({"name":"趙六"})
WriteResult({ "nRemoved" : 2 })
刪除一條
db.user.remove({"name":"王五"},true)
db.user.remove({"name":"王五"},1)
清除集合中的全部文檔數據
db.user.remove({})

3.xx版本之後的刪除

db.collection.deleteOne()

db.user.deleteOne({'name':"李四"})
{ "acknowledged" : true, "deletedCount" : 1 }

db.collection.deleteMany()

db.user.deleteMany({'name':"李四"})
{ "acknowledged" : true, "deletedCount" : 2 }

6、查詢

(1) find查全部

db.collection.find()

(2) 哪些字段顯示與隱藏

指定顯示某些字段 字段名:true

db.user.find({},{name:true}) 只顯示name和id
db.user.find({},{name:true,age:true}) 顯示name和age和id字段

指定除了某個字段之外的字段都顯示

db.user.find({},{name:false,age:false})

注意:

本身定義的域 只能設置顯示 或者不顯示 不能一塊兒設置

可是系統的id能夠 由於無論你給其餘域設置true或者false都會顯示

只有這種能夠

db.user.find({},{"_id":false,age:true})

(3) findOne 只查詢一條

db.user.findOne({"age":28})

(4) count 統計

db.user.find().count()
db.user.find({age:18}).count()

(5) pretty 展開查看

db.user.find().pretty()

(6) 查詢條件符

$gt       大於                    db.user.find({age:{$gt:18}})
$gte    大於等於               db.user.find({age:{$gte:18}})
$lt        小於                    db.user.find({age:{$lt:28}})
$lte    小於等於              db.user.find({age:{$lte:28}})
{key:val}    等於                db.user.find({age:28})
$ne        不等於                   db.user.find({age:{$ne:28}})
/數據/    模糊查詢             db.user.find({name:/張/})
/^數據/      以...做爲開頭        db.user.find({name:/^張/})
/數據$/    以...做爲結尾        db.user.find({name:/張$/})
$in         在...範圍內           db.user.find({'age':{$in:[18,20]}})
$nin    不在...範圍內          db.user.find({'age':{$nin:[18,20]}})
按照id來查詢                   db.user.find({"_id" : ObjectId("5b0fabcda14d4a753f75edc5")})

(7) and查詢

db.user.find({"name":"張三","age":28})
db.user.find({"age":{$gt:18,$lt:28}})
#名字包含李的,而且年齡大於18而且小於28 只顯示name字段
db.user.find({"name":/李/,"age":{$gt:18,$lt:28}},{"_id":false,'name':true})

(8) $or查詢

db.collection.find({$or:[條件1,條件2...]})

查詢年齡大於18 或者 小於28

db.user.find({$or:[{age:{$gt:18}},{age:{$lt:28}}]})
db.user.find({$or:[{name:/張/},{name:/三/}]})

(9) and 和 or的一塊兒使用

主體結構:
db.user.find({名:值...,$or:[{條件1},{條件2}...]})
select * from user where name like '%三%' and (age=18 or age=28)

(10) limit 取值

db.collection.find().limit(num)

db.user.find().limit(2)

注意:

從頭取出 num條

(11) skip 跳過num條

db.collection.find().skip(num)

db.user.find().skip(2)

(12) limit 和 skip的結合使用

db.collection.find().skip(num).limit(num)

db.user.find().skip(2).limit(2)

(14) sort 排序

db.collection.find().sort({key:1|-1}) #升序或者降序

db.user.find().sort({age:-1}).limit(1)

7、數據庫的刪除

刪除以前最好use一下

db.dropDatabase()

相關文章
相關標籤/搜索