Mongodb與關係型數據庫最大的區別就是無約束, 既無字段(外鍵等)約束, 也沒有數據類型約束, 以json存儲數據庫
安裝
啓動Mongodb(默認在c盤找 data/db/文件夾)
服務端:
mongod --dbpath "指定數據庫目錄"
默認端口 27017
客戶端:
mongo
經常使用命令:json
show dbs
查看全部存在磁盤上的數據庫
show tables
查看當前數據庫存在磁盤上的表(collections)
use db
建立(不存在這個名字) 或者 切換數據庫
db
當前數據庫
db.user(表名)
建立表
增
db.user.insertOne({"name": "Amber"})
db.user.insertMany([{"name": "May"}, {"name": "Ryan"])
刪
db.user.deleteOne({"name": "Amber"})
db.user.deleteMany([{"name": "May"}, {"name": "Ryan"])
改
updata 須要結束一下修改器
({"條件"},{"關鍵字(修改器)":{"修改內容"}})
$set 修改, 沒有則添加一個字段
db.user.updataOne({'name': 'Ryan'}, {$set: {'age': 18}})
$unset 刪除Field
db.user.updataOne({'name': 'Ryan'}, {$unset: {'age': 1}})
$inc 將查詢到的某個結果,加上一個某個值
db.user.updateOne({'name': 'Ryan'}, {$inc: {'age': -10}})
array 修改器
$push 在array(list)尾端添加一個新元素
db.user.updateOne({'name': 'Ryan'}, {$push: {'hobby': '喝酒'}})
$pull 刪除某一個元素
db.user.updateOne({'name': 'Ryan'}, {$pull: {'hobby': '作夢'}})
$pop 刪除 1是倒數第一個, -1 是正數第一個
db.user.updateOne({'name': 'Ryan'}, {$pull: {'hobby': 1}})
$pushAll
db.user.updateOne({'name': 'Ryan'}, {$pushAll: {'hobby': ['登山', , '游泳']}})
$ 代指符 $存儲符合條件的元素下標(索引)
Array中的Object
"hobby" : [
"喝酒",
{
"name" : "ball",
"price" : 100
},
"登山",
"游泳"
若是要修改 ball 的價格 200
db.user.updateOne({'hobby.name': 'ball'}, {$set: {'hobby.$.price': 200}})
spa
Object中的Array
{
"info" : {
"id" : 1,
"name" : "Ryan",
"age" : 73,
"hobby" : [
"喝酒",
"登山"
]
}
}
把喝酒改爲游泳
db.user.updataOne({'info.hobby': '喝酒'}, {$set: {'info.hobby.$': '游泳'}})
查
db.user.find({條件})
且
db.user.find({{"id":2,"age":18}})
或
db.user.find({$or: [{'age': {$gt: 18}}, {'name': 'May'}]})
in
db.user.find({'age': {$in: [10, 20, 30]}})
sort, skip, limit:
skip(5) 跳過五條數據
limit(5) 只顯示五條數據對象
sort({age:1}) 升序
sort({age:-1}) 降序索引
若是三個關鍵字同時出現,優先級以下
1.sort 2.skip 3.limit
db.user.find().sort({'field': 1 or -1}).skip(n).limit(n)
pymongo
注意:
'_id': ObjectId('5c3eddb16c347e190d0510cc' 是ObjectId類的對象
若是要序列化,也先str(_id),強轉字符串在序列化ip