MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。
MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。是世界上最大的nosql(not only sql)數據庫。執行mongodb數據庫需要mongod環境和mongo環境。
數據庫
概念:存儲數據的倉庫我們稱爲數據庫。數據庫分爲非關係型數據庫和關係型數據庫。關係型數據庫(Oracle,mysql,db2,...)往往以表結構的形式進行存儲
mongodb和mysql的區別
- 前者非關係型數據庫,後者是關係型數據庫
- mongodb中是以集合的形式來充當mysql中的表結構
- mongodb中的數據是以文檔的形式進行存儲
mongodb的優點
- 面向文檔存儲的數據庫(BSON的數據格式)
- 有豐富的查詢指令
- 支持索引
- 具有分片系統
- 無模式
mongodb的缺點
- 佔用的空間比較大
- 不支持事務
- 對於windows來說,它不支持32位的系統
mongodb常用指令
-
show dbs
查看當前所有數據庫
-
use database_name
創建數據庫 -
db
查詢當前使用的數據庫 -
db.stats()
查詢當前使用的數據庫信息 -
db.dropDatabase()
刪除當前數據庫
-
db.help()
獲取查詢幫助 -
db.database_name.help()
獲取指定數據庫查詢幫助 -
db.collection_name.find()
查詢集合的信息 -
db.createCollection(coll_name,options)
創建集合 -
db.getCollectionNames()
查詢所有集合 -
db.getCollection(coll_name)
查詢某一個特定集合 -
db.coll_name.drop()
對集合的刪除 -
db.printCollectionStats()
打印當前數據庫中所有集合的狀態 -
db.coll_name.insert/insertMany/save/insertOne
添加一條/多條數據 -
db.coll_name.update(query,info,con,muti)
修改數據(query: 查詢的條件;info: 要更新的信息;con: 給異步操作提供擴展;muti: 返回布爾類型 默認false)(這裏涉及到幾個特殊屬性$inc
和$set
前者爲相加後者爲設置) -
db.coll_name.remove(query)
刪除數據(query 刪除的條件)
- 對數據的查詢
-
db.coll_name.find()
查詢所有信息 -
db.coll_name.find({"age": 18})
查詢某一條信息 -
db.coll_name.find({age: {$gt: 22}})
gt大於某一條件 -
db.coll_name.find({age: {$lt: 22}})
lt小於某一條件 -
db.coll_name.find({age: {$gte: 22}})
gt大於等於某一條件 -
db.coll_name.find({age: {$lte: 22}})
lte小於等於某一條件 -
db.coll_name
.find({title: /好/}) 模糊查詢
mongodb術語概念
sql術語/概念 | mongodb術語/概念 | 解釋/說明 |
---|---|---|
database | database | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 數據記錄行/文檔 |
column | field | 數據字段/域 |
index | index | 索引 |
table joins | 表連接,mongodb不支持 | |
primary key | primary key | 主鍵,mongodb自動將_id字段設置爲主鍵 |
項目中使用mongodb
切換到指定項目 npm init生成package.json
npm install mongodb -g 全局安裝
npm install mongodb --save-dev 局部安裝
mongodb.js
var Mongodb = require("mongodb")
// 連接到mongodb的服務端口
var server = new Mongodb.Server("localhost",27017,{auto_reconnect:true})
//創建數據庫
var db = new Mongodb.Db('cloud',server,{safe:true})
//連接數據庫
db.open((err,db) => {
if(err) {
console.log('連接數據庫失敗')
} else {
console.log('連接數據庫成功')
}
})