node中使用mongodb

2020-06-08  本文已影响0人  Mr无愧于心

1. 在node中安装mongodb

$ cnpm install mongodb

2. 引入并初始化mongodb

const {MongoClient} = require('mongodb');//创建一个 MongoClient 对象
const url = "mongodb://localhost:27017/runoob";//数据库的地址

3. 链接数据库

MongoClient.connect(url, { useNewUrlParser: true }, function (err, db) {
    if (err) throw err;
    console.log('数据库链接成功');
    var dbase = db.db("runoob");//链接到runoob数据库;
    db.close();//关闭数据库
});
//不加{ useNewUrlParser: true }系统会报警告

4. 操作数据库
操作完数据库之后一定要关闭数据库

  1. 增加数据insertOne
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) console.log(err);
    var dbo = db.db("runoob");//链接runoob数据库
    var myobj = { name: "教程", url: "www.runoob" };
    dbo.collection("site").insertOne(myobj, function(err, res) {
    //insertOne往site集合中插入一条数据
        if (err) console.log(err);
        console.log(res);
        db.close();//关闭数据库
    });
});
  1. 插入多条数据insertMany
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) console.log(err);
    var dbo = db.db("runoob");//链接runoob数据库
    var myobj =  [
        { name: '菜鸟工具', url: 'https://c.runoob.com', type: 'cn'},
        { name: 'Google', url: 'https://www.google.com', type: 'en'},
        { name: 'Facebook', url: 'https://www.google.com', type: 'en'}
       ];
    dbo.collection("site"). insertMany(myobj, function(err, res) {
    //insertMany往site集合中插入多条数据一个数组
        if (err) console.log(err);
        console.log(res);
        db.close();//关闭数据库
    });
});
数据插入成功
  1. 删除一条数据
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = {"name":'菜鸟教程'};  // 查询条件
    dbo.collection("site").deleteOne(whereStr, function(err, obj) {
        if (err) throw err;
        console.log("文档删除成功");
        db.close();
    });
});

  1. 删除多条数据
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = { type: "en" };  // 查询条件
    dbo.collection("site").deleteMany(whereStr, function(err, obj) {
        if (err) throw err;
        console.log(obj.result.n + " 条文档被删除");
        db.close();
    });
});
  1. 修改一条数据updateOne
    把name为“教程”的数据的type换成'cn',只更换第一条,注意要写$set
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = {"name":'教程'};  // 查询条件
    var updateStr = {$set: { type: 'cn' }};
    dbo.collection("site").updateOne(whereStr, updateStr, function(err, res) {
        if (err) throw err;
        console.log("文档更新成功");
        db.close();
    });
});

  1. 修改多条数据updateMany():
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = {"type":'en'};  // 查询条件
    var updateStr = {$set: { "url" : "https://www.runoob.com" }};
    dbo.collection("site").updateMany(whereStr, updateStr, function(err, res) {
        if (err) throw err;
         console.log(res.result.nModified + " 条文档被更新");
        db.close();
    });
});
  1. 查询数据 find

查询name为'菜鸟教程'的数据并打印
toArray()自带函数,转换成数组接受一个回调函数

MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
     var whereStr = {"name":'菜鸟教程'};  // 查询条件
    dbo.collection("site").find(whereStr).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);//查询的结果一个数组
        db.close();
    });
});

  1. 数据排序 sort
    按type正序排列
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var mysort = { type: 1 };
    dbo.collection("site").find().sort(mysort).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

  1. 数据分页 skip / limit
    查询 page=2, size=2
let page=2;
let size=2
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    dbo.collection("site").find().skip((page-1)*size).limit(size).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
  });
});

  1. 管道查询
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
  if (err) throw err;
  var dbo = db.db("runoob");
  dbo.collection('orders').aggregate([
    {
      $project:{"_id":}
    },
    { $lookup:
       {
         from: 'products',            // 副集合
         localField: 'product_id',    // 主集合 join 字段
         foreignField: '_id',         // 副集合 join 字段
         as: 'orderdetails'           // 新生成字段(类型array)
       }
     },
    { $project:
      {
        "_id":0,
        "product_id":1,
        "status":1,
        "orderdetails":1
      }
    }
  ]).toArray(function(err, res) {
    if (err) throw err;
    console.log(res);
    db.close();
  });
});
//console (res) 结果
[{
  product_id":154,"
  status":1,"
  orderdetails":[
    {
      "_id":154,
      "name":"笔记本电脑"
    }
  ]
}]
上一篇 下一篇

猜你喜欢

热点阅读