Node.js + Mongodb

mongodb數據的結構

數據庫 => 集合 => json數據(行)

數據庫的cmd操作

1. 連接數據庫

mongo 連接數據庫,以便於管理/操作

2. 查看數據庫

show dbs 查看所有數據庫

mongodb內置數據庫: amdin config local 不要動

3. 創建/進入/刪除數據庫

use 數據庫名 進入該數據庫(操作該數據庫前必須先進入) , 若無該數據庫則創建

只有進入了某個數據庫,以下的 db.xxx 命令才能使用

db.dropDatabase() 刪除當前數據庫

4. 創建/查找/刪除集合

show collections 查看當前數據庫的所有集合

db.集合名.drop() 刪除當前集合

5. json的插入

db.集合名.insert( { “name”: “juln” } ) 在某集合中插入內容,若無該集合則創建

6. json的查找

db.集合名.find() 查看某集合的所有數據

db.集合名.find( { “name”: “juln” } ) 查找指定數據

db.集合名.find( { “name”: /ju/ } ) 模糊查詢,正則

db.集合名.find( { “age”: { $lt: 22 } } ) $lt爲 age<22 , $gt爲 age>22 , $gte 大於等於 , $lte 小於等於 , { $lt: 22, $gt: 25 } 大於22小於25

db.集合名.find( {}, { name: 1, age: 1 } ) 查找後只顯示部分列

db.集合名.find().sort( { age: 1 } ) 升序降序,1爲升序,-1爲降序

db.集合名.find().limit(5) 查詢前5條數據

db.集合名.find().skip(10) 跳過前10條數據再查詢

db.集合名.find().skip(10).limit(2) 查詢第11,12條數據

db.集合名.find().count() 統計行數

db.集合名.find( { $or: [{age:22},{age:25}] } ) 與查詢 or

db.集合名.findOne() 查找第一條數據 (不常用)

7. JavaScript

cmd mongodb 可以使用JavaScript語句 , 如

for(let i = 0; i < 100; i++) {
db.集合名.insert( { “id”: i } )
}

json的修改

db.集合名.update( { “name”: “juln” }, { “name”: “hhh” } ) 查找到name爲juln的第一條數據,並用 {“name”: “hhh”} 完全替換該數據

db.集合名.update( { “name”: "juln }, { $set: {“age”:20} } ) 查找到name爲juln的第一條數據,並修改age爲20

db.集合名.update( { “sex”: “男” }, { $set:{“age”: 33} }, { multi: true } ) 更新所有匹配的數據

json的刪除

db.集合名.remove( {} ) 刪除所有

db.集合名.remove( { “name”: “juln” } ) 刪除name爲juln的數據

db.集合名.remove( { “sex”: “男” }, { justOne: true } ) 刪除sex爲男的第一條數據

mongodb進階/高級

https://www.bilibili.com/video/BV16f4y1U7oT?p=21 21~24

Node.js操作Mongodb

推薦菜鳥教程 https://www.runoob.com/nodejs/nodejs-mongodb.html

下載包

npm i mongodb

連接/創建數據庫

要連接的數據庫不存在時,自動創建數據庫

const MongoClient = require('mongodb').MongoClient

const dbName = 'test'

const url = 'mongodb://127.0.0.1:27017/' + dbName // 默認爲27017,具體是多少通過cmd mongo查看

MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => { //  { useNewUrlParser: true } 是官方推薦要加上的
    if (err) throw err
    console.log("數據庫已創建!")

    db.close()
})

const MongoClient = require('mongodb').MongoClient
const assert = require('assert')

const url = 'mongodb://127.0.0.1:27017'

const dbName = 'test'

const client = new MongoClient( url, { useNewUrlParser: true } )

client.connect( err => {
    assert.equal(null,err)
    console.log("數據庫連接成功!")
    
    const db = client.db(dbName)

    const collection = db.collection('test') // 獲取test集合


    // 查詢
    collection.find({}).toArray( (err,data) => {
        console.log(data)
        
        client.close() // 關閉數據庫連接
    })


    // 插入
    collection.insertMany( [ {"name":"juln",age:20}, {"name":"zhuang",age:20} ], (err,result) => {
        console.log("插入的數量爲: " + result.insertedCount)

        client.close()
    })

    collection.insertOne( { "name": "juln" }, (err,result) => {
        console.log(result)

        client.close()
    })

    // 更新
    collection.updateOne( { "name": "juln" }, { $set: {age:20} }, (err,result) => {
        console.log(result)
        
        client.close()
    })

    // 刪除
    collection.deleteMany
    collection.deleteOne( { "name": "juln" }, err => { // 找不到數據就不會刪除,所以不會報錯
        if(err){
            console.log('刪除失敗')
            return
        }
        
        client.close()
    })
    
})

服務器只能被請求一次的原因

這裏的評論區有提到 http://www.imooc.com/wenda/detail/584619

所以 client.close() 就都不要寫了,統統去掉,輕輕鬆鬆

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章