搜索mongo
docker search mongo
拉取mongo【這里默認為latest】
docker pull mongo
查看本地鏡像
啟動容器【就是安裝,-v后面的參數表示把數據文件掛載到宿主機的路徑,-p把mongo端口映射到宿主機的指定端口,--auth表示連接mongodb需要授權】
docker run -p 27017:27017 -v /tmp/db:/data/db -d mongo
查看運行中的容器
docker ps
進入mongo【以 admin 用戶身份進入mongo,相當於oracle的用戶也就是庫,mysql的庫】
docker exec -it 4abc1e6e12bd mongo admin
創建一個 admin 管理員賬號
db.createUser({ user: 'admin', pwd: '密碼', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
對 admin 進行身份認證
db.auth("admin","密碼");
用工具連接mongo【Robo】
https://robomongo.org/download
查看數據庫
show databases
db.getMongo().getDBs()
查看當前數據庫
db
mongo與mysql對應:庫概念一樣,mongo的集合對應mysql的表,mongo的文檔對應mysql的行數據
創建
插入多條數據insert()
只能插入一條數據insertOne()
插入多條數據insertMany()
// teachers就是集合,{name: "smallstudy"}這些就是文檔 db.teachers.insert([ {name: "smallstudy"}, {name: "zhangsan"}, {name: "lisi"} ]) // 等價於 db.teachers.insertMany([ {name: "smallstudy"}, {name: "zhangsan"}, {name: "lisi"} ])
一對多
db.teachers.insertMany([ {name: "smallstudy"}, {name: "zhangsan"}, {name: "lisi"} ]) //創建后拿到teachers的id db.students.insert([ {name: "laodage", teacher_id: ObjectId("5c7102f7eda36e7892b9defb")}, {name: "xiaolaodi", teacher_id: ObjectId("5c7102f7eda36e7892b9defb")}, {name: "enen", teacher_id: ObjectId("5c7102f7eda36e7892b9defc")} ]) // 查詢 var teacher_id = db.teachers.findOne({"_id": ObjectId("5c7102f7eda36e7892b9defb")})._id; db.students.find({teacher_id: teacher_id}); // 或 db.students.find({teacher_id: db.teachers.findOne({"_id": ObjectId("5d25861568a280ba089f91d1")})._id});
查詢
find()
findOne()
// 查集合下所有文檔 db.teachers.find() // 查集合下某個文檔 db.teachers.find()[0] db.teachers.find({"name": "zhangsan"}) // 查看集合長度,也就是看集合有多少文檔 db.teachers.find().count() db.teachers.find().length() // 只顯示2條數據 db.teachers.find().limit(2) // 跳過第1條數據顯示2條數據,用於分頁 db.teachers.find().skip(1).limit(2)
修改
update()
updateOne()
updateMany()
replaceOne()
db.teachers.update({"name": "lisi"}, {$set:{"name": "lisi2", "age": 25}}) // 這里的修改時先刪除后添加的
刪除
remove()
deleteOne()
deleteMany()
drop()
// 直接刪集合 db.teachers.remove() db.collectionName.drop() // 刪文檔 db.teachers.remove({"name": "lisi2"})