概述
MongoDB 是一個基于分布式檔案存盤的資料庫,由 C++ 語言撰寫,旨在為 WEB 應用提供可擴展的高性能資料存盤解決方案,
MongoDB 是一個介于關系資料庫和非關系資料庫之間的產品,是非關系資料庫當中功能最豐富,最像關系資料庫的
MongoDB以BSON結構作為存盤和網路存盤,BSON是一種二進制的JSON,在JSON基礎上擴展,比JSON支持更多的型別,如Date 和 BinData
BSON結構具有以下特性
- 輕量級
- 可遍歷
- 高效性
檔案(Document):Mongodb以BSON結構存放的一條記錄,相當于Row
集合(Collection):存放檔案的集合,相當于Table
資料庫(Database):存放集合和索引及其他資訊的集合
組態檔
mongod.cfg
storage: # 資料存放的位置 dbPath: F:\Database\Mongodb\Data journal: # 持久化 enabled: true # engine: # mmapv1: # wiredTiger: # where to write logging data. systemLog: # 日志的記錄形式 destination: file # 是否追加 logAppend: true # 日志的檔案(注意是檔案) path: F:\Database\Mongodb\Log\mongod.log # network interfaces net: # 系結埠 port: 27017 # 系結Ip bindIp: 127.0.0.1
啟動Mongodb
1. 按組態檔啟動
mongod -config mongod.cfg
2. 指定引數啟動
mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log"
3. 安裝服務
mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log" --serviceName "mongodb" --serviceDisplayName "mongodb" --install
連接Mongodb
cmd 執行
1. 默認配置
mongo
2. 連接字串
mongo mongodb://localhost
CRUD操作
Create
1. 插入單個檔案
db.logs.insertOne()
var data = https://www.cnblogs.com/WilsonPan/p/{"UserId" : 10, "Operate" : "登錄" , "CreateTime" : new Date() }; db.logs.insertOne(data);
回傳
{ "acknowledged" : true, //是否寫入成功 "insertedId" : ObjectId("5e929706fe1792ce954f65f1") //插入行的Id }
2. 插入多個檔案
var data =https://www.cnblogs.com/WilsonPan/p/ [ {"UserId": 10, "Operate": "登錄", "CreateTime": new Date() }, {"UserId": 10, "Operate": "點擊首頁", "CreateTime": new Date() }, {"UserId": 10, "Operate": "查看串列", "CreateTime": new Date() } ] db.logs.insertMany(data);
回傳
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5e9297dbfe1792ce954f65f2"), ObjectId("5e9297dbfe1792ce954f65f3"), ObjectId("5e9297dbfe1792ce954f65f4") ] }
3. db.collection.insert
insert可以插入單個檔案(物件)/ 多個檔案(物件的陣列)
var data =https://www.cnblogs.com/WilsonPan/p/ [ {"UserId": 10, "Operate": "登錄", "CreateTime": new Date() }, {"UserId": 10, "Operate": "點擊首頁", "CreateTime": new Date() }, {"UserId": 10, "Operate": "查看串列", "CreateTime": new Date() } ] db.logs.insert(data);
回傳
單個檔案
WriteResult({ "nInserted" : 1 })
多個檔案
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
4. 若不存在插入
在日常操作中,經常需要寫不存在就寫入的操作,在mongodb一種更新機制(upsert),若不存在就寫入,
db.logs.update({ "UserId": 20 }, { "UserId": 20, "Operate": "登錄", "CreateTime": new Date() }, { upsert: true })

支持upsert引數的方法
- db.collection.update()
- db.collection.updateOne()
- db.collection.updateMany()
- db.collection.findAndModify()
- db.collection.findOneAndUpdate()
- db.collection.findOneAndReplace()
Read
db.logs.find({"UserId":20});
db.logs.findOne({"UserId":10});
Update
1. 更新單個檔案
db.logs.updateOne({ "_id": ObjectId("5e92b6d4fe1792ce954f6613") }, { $set: { "CreateTime": new Date() } })
2. 更新多個檔案
db.logs.updateMany({ "UserId": 10 }, { $set: { "CreateTime": new Date() } })
Delete
1. 洗掉單個檔案
db.logs.deleteOne({ "UserId": 20 })
2. 洗掉多個檔案
db.logs.deleteMany({ "UserId": 10})
轉發請標明出處:https://www.cnblogs.com/WilsonPan/p/12685393.html
參考文章
Collection Methods — MongoDB Manual
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8795.html
標籤:NoSQL
