是一個非關係型數據庫 存儲形式爲鍵值對 水平擴展很容易 常做爲緩存數據庫來使用python
Mongodb的存儲文檔稱之爲 BSON 相似json對象 字段值能夠包含其餘的文檔 、數組 以及文檔數組mysql
sql概念 | mongodb的概念 | 解釋/說明 |
---|---|---|
database | database | 數據庫 |
table | collection | 表/集合 |
row | document | 行/文檔 |
column | field | 列/域 |
table join | 表關聯 | |
primary key | primary key | 主鍵手動添加/自動建立 |
mongod.exe --dbpath=D:\db
cd mongodb的bin目錄sql
mongo.exemongodb
mongod.exe --bind_ip 0.0.0.0數據庫
mongo ip:port/database -u username -p password
mongo database --host x.x.x.x --port 31935 -u username -p passwordjson
show dbs數組
use 數據庫名緩存
db.getName()code
db.createCollection('user')對象
db.goods.insert({"goodsname":"牛奶"})
show collections
db.collection_name.drop()
若是遇到命名奇怪的集合,如數字名字的集合沒法刪除,可使用以下
db.getCollection('123').drop()
注意:
mongodb區分大小寫
db.old_name.renameCollection("new_name")
db.集合名.insert({文檔})
db.user.insert({'name':"張三",'age':18})
列表中存放多條文檔
db.user.insert([{'name':'李四','age':20},{'name':'王五','age':25}])
db.collection.insertOne()
db.user.insertOne({"name":"趙六","age":30})
db.collection.insertMany()
db.user.insertMany([{"name":"趙六","age":30},{"name":'王五',"age":22}])
插入多條文檔 無論是insert仍是insertMany 都須要使用列表
insertMany 若是不適用列表 則報錯
insert 插入多條不適用列表 則插入成功數據爲第一條文檔
主體結構
db.collection.update(
<query>, 查詢的條件
<update>, 要更改的東西
{
<upsert> bool值 若是修改的數據查詢不到 當前數據是否做爲新數據插入 默認Flase 不插入
<multi> bool 值 若是匹配到多條 默認是更改一條 Flase 改成True則所有更改
}
)
$set 直接修改
$inc 累加修改
實例
db.user.update({"name":"張三"},{"age":38})
db.user.update({"name":"李四"},{$set:{"age":30}})
db.user.update({"name":"李四"},{$inc:{"age":30}})
upsert參數的使用
db.user.update({"name":"張三"},{$set:{"age":30}},true)
{ "_id" : ObjectId("5b0f68068829170dea936f21"), "name" : "張三", "age" : 30 }
db.user.update({"name":"趙六"},{$set:{age:10}},{multi:true})
db.user.update({"name":"趙六"},{$set:{age:18}},true,true)
db.collection.updateOne()
實例
db.user.updateOne({"age":18},{$set:{age:10}})
db.collection.updateMany()
實例
db.user.updateMany({"name":'趙六'},{$set:{age:12}})
主體結構
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({})
db.collection.deleteOne()
db.user.deleteOne({'name':"李四"}) { "acknowledged" : true, "deletedCount" : 1 }
db.collection.deleteMany()
db.user.deleteMany({'name':"李四"}) { "acknowledged" : true, "deletedCount" : 2 }
db.collection.find()
指定顯示某些字段 字段名: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})
db.user.findOne({"age":28})
db.user.find().count() db.user.find({age:18}).count()
db.user.find().pretty()
$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")})
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})
db.collection.find({$or:[條件1,條件2...]})
查詢年齡大於18 或者 小於28
db.user.find({$or:[{age:{$gt:18}},{age:{$lt:28}}]}) db.user.find({$or:[{name:/張/},{name:/三/}]})
db.user.find({名:值...,$or:[{條件1},{條件2}...]}) select * from user where name like '%三%' and (age=18 or age=28)
db.collection.find().limit(num)
db.user.find().limit(2)
注意:
從頭取出 num條
db.collection.find().skip(num)
db.user.find().skip(2)
db.collection.find().skip(num).limit(num)
db.user.find().skip(2).limit(2)
db.collection.find().sort({key:1|-1}) #升序或者降序
db.user.find().sort({age:-1}).limit(1)
刪除以前最好use一下
db.dropDatabase()