MongoDB快速入門

一、MongoDB
-
簡介
MongoDB是由C++語言編寫的介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。
它不支持sql語句,對于字段沒有限定,創(chuàng)建表比較靈活,插入數(shù)據(jù)相對更方便。
而關(guān)系型數(shù)據(jù)庫則支持sql語句,對于字段有嚴(yán)格的限定,創(chuàng)建表比較麻煩,但查詢數(shù)據(jù)時更為便捷。
-
適用場景
網(wǎng)站數(shù)據(jù):MongoDB 非常適合實(shí)時的插入,更新與查詢,并具備網(wǎng)站實(shí)時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。
緩存:由于性能很高,MongoDB 也適合作為信息基礎(chǔ)設(shè)施的緩存層。
大尺寸,低價值的數(shù)據(jù)。
高伸縮性的場景:MongoDB 非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。
用于對象及 JSON 數(shù)據(jù)的存儲:MongoDB 的 BSON 數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢。
二、安裝配置
-
下載安裝包
在mongodb官網(wǎng)下載該安裝包,windows系統(tǒng)下載地址
-
開啟數(shù)據(jù)庫服務(wù)器
mongod --dbpath c:\data\db(c:\data\db為數(shù)據(jù)存放的位置)
提示:占用
27017端口,表示安裝成功27017.jpg -
接著配置環(huán)境變量
默認(rèn)安裝目錄:C:\Program Files\MongoDB\Server\3.2\bin
-
配置完成后,在cmd中接著運(yùn)行
mongod --dbpath c:\data\db提示
27017結(jié)尾的命令,表示配置成功 -
重命名表(聚集集合)
db.goodsList.renameCollection("goodsLists")
三、Mongo常用命令
- 數(shù)據(jù)庫的操作
| 操作 | 命令 |
|---|---|
| 開啟數(shù)據(jù)庫服務(wù) | mongod --dbpath c:\data\db |
| 進(jìn)入數(shù)據(jù)庫 | mongo |
| 查看數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫 | show dbs |
| 創(chuàng)建或切換數(shù)據(jù)庫 | use 數(shù)據(jù)庫名 |
| 查看當(dāng)前使用的數(shù)據(jù) | db或者db.getName() |
- 表的操作
| 操作 | 命令 |
|---|---|
| 創(chuàng)建表 | db.createCollection(“表名”) |
| 獲取數(shù)據(jù)庫中所有的表 | db.getCollectionNames() |
| 使用某一張表 | db.getCollection(“表名”) |
| 刪除某一張表 | db.表名.drop() |
-
增加
添加字段:db.表名.save({字段})
eg:db.user.save({name:”lxc”,age:18,sex:”女”})
-
刪除
刪除所有字段:db.表名.remove({})
刪除指定字段:db.表名.remove({字段})
-
修改
修改字段:db.表名.update({字段},{$set:{字段}})
eg:db.user.update({name:”lxc”},{$set:{sex:”男”}})
在原來的基礎(chǔ)上修改:db.表名.update({字段},{$inc:{字段(數(shù)字)}})
eg:db.user.update({name:”lxc”},{$inc:{age:10}})
此時,用戶lxc的年齡在原來的18基礎(chǔ)上增加了10,變?yōu)榱?8.
查詢(以user表為例)
| 操作 | 命令 |
|---|---|
| 查找表中所有數(shù)據(jù) | db.表名.find() |
| 統(tǒng)計表中的數(shù)據(jù)條數(shù) | db.表名.find().count() |
| 控制查找后顯示n條數(shù)據(jù) | db.表名.find().limit(n) |
| 顯示查找結(jié)果的第一項 | db.表名.findOne({age:18}) |
| 跳過搜到結(jié)果中的前n條數(shù)據(jù) | db.user.find().skip(n) |
| 跳過搜到結(jié)果中的前n條數(shù)據(jù),顯示m條 | db.user.find().skip(n).limit(m)[1] |
| 查找指定字段(去重) | db.表名.fistinct({age}) |
| eg:查找用戶表中的年齡: | db.user.distinct(“age”)—[18,21,40,15,30,44] |
| 查找滿足某個字段的記錄 | db.user.find(name:”lxc”) |
| 查找年齡大于30的記錄 | db.user.find({age:{$gt:30}}) |
| 查找年齡小于等于30的記錄 | db.user.find({age:{$lte:30}}) |
| 查找年齡小于20或大于30的記錄 | db.user.find({age:{$lt:20,$gt:30}}) |
| 模糊查詢:查找name中有l(wèi)xc的用戶的記錄 | db.user.find({name:/lxc/}) |
| 查找name字段中,首字符是L的記錄 | db.user.find({name:/^L/}) |
| 查找name字段中,尾字符是L的記錄 | db.user.find({name:/^$/}) |
| 查找所有數(shù)據(jù),但只顯示name字段 | db.user.find({},{name:1,_id:0})[2] |
| 按照age字段升序排序 | db.user.find().sort({age:1}) |
| 按照age字段降序排序 | db.user.find().sort({age:-1}) |
| …… | …… |
四、在Node中操作Mongo
- 初始化安裝
npm init -y
cnpm install mongodb -S
const mongoClient = require("mongodb").MongoClient;
-
創(chuàng)建連接方式
const url = "mongodb://127.0.0.1:27017"; -
創(chuàng)建連接的數(shù)據(jù)庫
const db_name = "user" -
連接
mongoClient.connect(url,(err,client) => { if(err){ console.log("連接失敗"); }else{ console.log("連接成功"); } }) -
連接數(shù)據(jù)庫和表
這里定義的表名,不區(qū)分大小寫;即使定義為大寫,也會轉(zhuǎn)為小寫,而一旦數(shù)據(jù)庫中原來創(chuàng)建的表名為大寫,在這里要通過Node進(jìn)行操作時,則會創(chuàng)建一個新表。
var user = client.db(db_name).collection("user"); -
增刪改查
//增 user.save({name:"lxc",age:18,sex:"男"},(err,data) => { console.log(err,data); }) //改 user.update({name:"lxc"},{$set:{age:28}},(err) => {}) //查 user.find().toArray((err,data) => { console.log(data); }) //刪 user.remove({name:"lxc"},(err,data) => {})
for(var i = limit*(page - 1); i < Math.min(limit * page , 100) ; i++){}
每次請求的數(shù)據(jù) : db.user.find().skip((page - 1) * limit).limit(limit)
