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() 就都不要写了,统统去掉,轻轻松松

你可能感兴趣的:(笔记,Mongodb)