1. 程式人生 > >淺談mongodb

淺談mongodb

mongodb的介紹:

一個文件型資料庫(非關係型資料庫nosql也是)
層級為:資料庫=====》集合(表)===》文件(資料)類json的資料結構

安裝:

mongodb官網下載

  • 左下角小箭頭 不要點
  • 可能缺少 api-ms 檔案 可以去 postman(下載軟體psostman 檔案裡邊有api-ms檔案) 找
  • 可能缺少c/data/db 檔案 進行建立
    執行
  • mongod 執行mogodb資料庫
  • mongo 連結資料庫 並且可以執行查詢語句
  • cls 清屏

基本指令

db操作:

show dbs (databases) 顯示當前資料庫
use dbname  切換資料庫  建立資料庫
建立的是一個臨時資料庫,需要在臨時資料庫裡新增一個集合,資料才有效
db  指代當前使用的資料庫
db.dropDatabase() 刪除資料庫
collection 操作

db.createCollection('集合的名字')//建立一個集合
db.集合名.drop() //刪除一個集合
show collections 檢視當前所有的集合
document 操作

db.dbname.增刪改查().pretty()   格式化資料

增:

文件的資料結構和JSON基本一樣。
所有儲存在集合中的資料都是BSON格式。
BSON是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON
db.dbname.insert(obj) //插入資料(可多可少) 主鍵不能重複
主鍵: 唯一不重複 mongodb 中的_id預設是一個特殊的資料型別 objectId
主鍵可以人為設定 如果不設定就是預設的objectId
db.dbname.save(obj) //插入資料 主鍵不存在插入 主鍵存在就是覆蓋
批量匯入:1.以陣列的形式匯入
2.外部匯入
退出mongo環境
mongoimport --db study --collection score --file 路徑 --drop
–db:資料庫
–collection:集合名字
–file:檔案的地址
–drop :該項為可選 項,新增的話表示覆蓋。否則是追加。

刪:

    db.dbname.remove({"xxx":xx});刪除xxx為xx的所有文件
    db.dbname.remove({"xxx":xx},{justOne:true});刪除第一個xxx為xx的文件
    db.dbname.remove({})刪除集合中所有的資料

改:

    db.dbname.update({條件},{$set:{修改的項}})
    db.dbname.update({條件},{$set:{修改的項}},{multi:true})修改所有完整修改

查:

1.db.dbname.find()查詢所有的
2.條件查詢
    $gt: 大於   $gte  大於等於
    $lt: 小於   $lte  小於等於
    $ne: 不等於
3.多多查詢
    db.dbname.find($and:{xxx,yyy})  同時滿足xxx   yyy
4.db.dbname.find($or:[xxx,yyy]) xxx和yyy都可以
5.模糊搜尋
    db.dbname.find({xxx:/x/})xxx中含有x
6. db.dbname.count()  db.dbname.find().count() 檢視文件總條數
7.排序 db.dbname.find().sort({xx:1}) 從小到大
        db.dbname.find().sort({xx:-1}) 從大到小   排序優先
8.db.dbname.find().skip(x)跳過指定文件條數
9. db.dbname.find().limit(x) 調取前x條  0為所有
注:skip和limit順序沒關係 都是先跳過再調取
10.  limit(每頁的數量3).skip(0)
            已知:
            總條數:pageSum
            每頁顯示的條數:pageNum
            當前的頁數:pageIndex
            skip=(pageIndex-1)*pageNum;

Nodejs連線:

//引入第三方模組mongodb
const MongoClient=require('mongodb').MongoClient;
var DB_COMN_STR='mongodb://localhost:27017/';
MongoClient.connect(DB_COMN_STR,{ useNewUrlParser: true },function(err,client){
console.log('連線成功');
const db=client.db('study');
db.collection('list').find().toArray((err,data)=>{
console.log(err);
console.log(data);
})
})

robo3t mongodb 視覺化工具

1.配置安裝
2.測試連結 預設設定 localhost:27017
3.視覺化操作介面 執行mongodb指令進行查詢操作

mongoose的使用

引入

npm install mongoose --save
const mongoose=require('mongoose');

連結資料庫

mongoose.connect('mongodb://127.0.0.1:27017/資料庫名稱',{useNewUrlParser:true});
//跟新版本

獲取db物件(connection)

let db=mongoose.collection

監聽事件

db.on("error", function (error) {
console.log("Database connection failure:" + error);
});

db.on("open", function () {
console.log("資料庫連線成功");
})

db.on('disconnected', function () {
console.log('資料庫連線斷開');
})

建立schema物件並例項化

const Schema=mongoose.Schema;
let useSchema=new Schema({   
    name:{type:string,required:true},
    age:{type:Number,required:false}
})
將schema物件轉化為資料模型
mongoose,model(' 表名 ',schema物件的名字)
// 如果表明不是複數他會變成複數
// 將資料表與schema物件進行關聯
// use uses 複數
var use=mongoose.model( 'use',userSchema );
mongoose 所有的查詢結果都是promise

增
use.insertMany({name:"你還22"})
.then((data)=>{
    console.log(data);
})
.catch((err)=>{
    console.log(err);
})