MongoDB是由 C++ 編寫的基於分佈式文件存儲的非關係型數據庫(NoSQL),將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成,相似於 JSON 對象。MongoDB 與其餘關係型數據庫相比,關係型數據庫必須建立表和字段,不然沒法使用,可是mongodb屬於「無狀態模式」,結構不須要設計,會自動建立數據庫和集合,直接使用便可,存什麼東西取決於咱們本身向他傳入什麼(當不存在則建立,不須要手動去建立)。MongoDB 數據存儲量大時,丟失率較高,適合存儲一些不過重要的信息。市面上用MongoDB的有紐約時報、優酷視頻等。html
以 Windows 10 操做系統爲例,安裝MongoDB。mongodb
$ mongod --dbpath D:\mongodb-data
。假設存在數據庫 shop 有集合 goods。數據庫
$ mongo
$ show dbs
$ use shop
$ db.goods.find()
查詢$ db.goods.findOne()
查詢一條數據$ db.goods.find({"name": "XXX"})
查詢name爲XXX的全部數據$ db.goods.find({"name": "XXX"},{"_id": 0})
查詢結果不顯示 _id$ db.goods.find({"name": /X/})
查詢name包括X的數據$ db.goods.find({"name":/米/},{"name":1}).limit(3)
查詢結果只顯示name的3條數據$ db.goods.find({"price": {"$gte":25,"$lte":27})
查詢price在25-27之間的數據$ db.goods.find({"country":{"$ne": "China"}})
查詢country不是China的數據$ db.goods.insert({"name": "XXX"})
增長{"name": "XXX"}這條數據$ db.googs.remove({/* 查詢條件 */})
刪除$ db.goods.update({/* 查詢條件 */},{"$set": {"name": "newName"})
更新$ db.goods.count({/* 查詢條件 */}
{"country": {"$in": ['China', 'USA']}
country是數組的某一個,相反就是$nin
{"$or":[{"c":{"$gte":85}},{"e":{"$gte":90}}]}
c>85或者e>90{"color":{"$all":["red","black"]}}
color有red和black,二者都有{"name":{"$not":/li/i}
name不存在li,$not 能夠反正任何地方取反{"books.1":"JS"}
books是數組,第二項是JS{"area.province":"sc"}
area是對象,屬性province是sc{"books":{"$size":4}}
books的長度爲4$ mongodump -h 127.0.0.1:27017 -d shop -o D:\data
mongorestore -h 127.0.0.1:27017 -d shop D:\data
另起命令行,不是在mongo裏面 $ mongoimport --db mydbs --collection product --drop --file
file是導入json文件的路徑(),注意--drop是先刪除後導入,也能夠不用--drop不刪除直接導入。express
const MongoClient = require('mongodb').MongoClient; const express = require("express"); const app = express(); const dbName = "mongodb://localhost:27017"; // mongodb的默認端口是27017 // connect --> insert、remove、update、find -->close app.get("/", (req, res) => { MongoClient.connect(dbName, (err, db) => { if (err) { // err爲一串錯誤,db爲null console.log("鏈接失敗"); return; } // 不然就是err爲null,db爲一串數據 console.log("鏈接成功"); // 在mydata的bbs集合(表)中插入一條數據,不存在bbs則建立 db.db("mydata").collection("bbs").insertOne({ "name": "myfirst" }, (err, result) => { if (err) { console.log("數據庫寫入失敗"); return; } console.log("成功插入"); db.close(); }); }); res.end(); }); app.listen(3000);
有參數的json
const MongoClient = require('mongodb').MongoClient const express = require('express') const app = express() const dbName = 'mongodb://localhost:27017' app.set('view engine', 'ejs'); app.get('/add', (req,res)=>{ res.render('add'); // views目錄下的add.ejs }) app.get('/manage',(req,res)=>{ let {name, age, sex} = req.query; MongoClient.connect(dbName,(err,db)=>{ if(err)return; res.writeHead(200,{'Content-type': 'text/html;charset=utf-8'}); res.write('鏈接數據庫成功'); db.db('dnedu').collection('bbs').insertOne({name,age,sex},(err,result)=>{ if(err)return; res.end(); db.close(); }) }) }) app.listen(80); <!--views/add.ejs--> <form action="/manage" method="get"> <p>姓名:<input type="text" name="name" /></p> <p>年齡:<input type="text" name="age" /></p> <p>性別:<input type="text" name="sex" /></p> <p><input type="submit" value="提交" /></p> </form>
數據變化可在 NoSQL Manager for MongoDB 查看。數組