node连接mongoDB

131 阅读1分钟

连接数据库

npm i mongodb
const { MongoClient } = require("mongodb");

const client = new MongoClient("mongodb的地址");

const main = async () => {
    //开始连接
    await client.connect();
    const db = client.db(数据库名字);
    const cc = db.collection(集合名字);
    //查找所有数据
    let d = await cc.find();//游标数据
    console.log(await d.toArray());//具体文档数据
};

//断开连接
main().finally(() => client.close());

数据存储结构

将整个 mongodb 想象成一个 json 格式的文件,不同的库就是不同的内容。

{
    //数据库(Database)
    "admin":{
        //集合(Collection) 对应关系型数据库的表
        "集合1":{
            //文档(Document) 对应关系型数据库一行一行的数据
            {
                //数据字段
                "id":1,
                "username":'aaa'
            }
        }
    },
    "config":{
        ...
    },
    "local":{

    }

}

库操作

  • 查看本地数据库

    show dbs
    
  • 切换到某个数据库

    use 数据库名字
    
  • 查看当前所在的数据库

    db
    
  • 退出数据库(终端)

    exit;
    quit();
    ctrl+c
    
  • mongodb 可以切换到不存在的库,但必须存数据才能创建出来

    创建数据: db.集合.insert({x:1,y:2})

  • 创建数据注意 数据库名字不区分大小写,尽可能小写,不要大小写和特殊符号,

  • 删除库,必须在库上面才能删除 db.dropDatabase()

集合操作

  • 创建集合
 db.集合.insert({x:1,y:2})
  • 集合名字注意

    不能是 $ . 等特殊符号
    
  • 查看所有集合

    show collections
    
  • 删除集合

    db.集合.drop()
    

文档操作

  • 文档的 key 命名 尽量跟写代码的变量命名一样

  • db.集合名字.insertOne/insertMany

    //一条
    const i = await cc.insertOne({ username: "nameA", age: "123" });
    console.log(i);
    
    //多条
    const j = await cc.insertMany([
        {
            username: "nameB",
            age: 13,
        },
        {
            username: "nameC",
            age: 111,
        },
    ]);
    console.log(j);
    
  • db.集合名字.deleteOne/deleteMany

    <!-- $lt:小于 $gt:大于-->
        const s = await cc.deleteOne({age:{$lt:15}})
    console.log(s);
    
    const s1 = await cc.deleteMany({age:{$gt:50}})
    console.log(s1);
    
  • db.集合名字.updateOne/updateMany

    const g = await cc.updateOne(
        { age: { $gt: 15 } },
        { $set: { username: "修改" } }
    );
    console.log(g);
    
    const g1 = await cc.updateMany(
        { age: { $lt: 15 } },
        { $set: { username: "修改小于" } }
    );
    console.log(g1);
    
  • db.集合名字.findOne/find

    const d = await cc.find(); //游标数据
    console.log(await d.toArray());
    
    const d1 = await cc.findOne({ age: { $gt: 15 } });
    console.log(d1); //一条数据直接展示,多条游标