周大胖子 发表于 2018-10-16 15:32:09

一些常用的mongodb命令

查询一个集合的条数db.col.find().count();删除一个集合 【算啦 我全复制粘贴过来吧   反正是我自己封装的】 【当时的 数据库版本号3.6.3,当时的 模块版本号 3.1.8】/**

* http://mongodb.github.io/node-mongodb-native

* http://mongodb.github.io/node-mongodb-native/3.0/api/
*/

//DB库
var MongoDB = require('mongodb');
var MongoClient =MongoDB.MongoClient;
const ObjectID = MongoDB.ObjectID;

var Config=require('./config.js');

class Db{

    static getInstance(){   /*1、单例多次实例化实例不共享的问题*/

      if(!Db.instance){
            Db.instance=new Db();
      }
      returnDb.instance;
    }

    constructor(){

      this.dbClient=''; /*属性 放db对象*/
      this.connect();   /*实例化的时候就连接数据库*/

    }

    connect(){/*连接数据库*/
      let _that=this;
      return new Promise((resolve,reject)=>{
          if(!_that.dbClient){         /*1、解决数据库多次连接的问题*/
            MongoClient.connect(Config.dbUrl, {useNewUrlParser:true},(err,client)=>{

                  if(err){
                      reject(err)

                  }else{

                      _that.dbClient=client.db(Config.dbName);
                      resolve(_that.dbClient)
                  }
            })

          }else{
            resolve(_that.dbClient);

          }


      })

    }
    //查
    find(collectionName,json){

       return new Promise((resolve,reject)=>{

            this.connect().then((db)=>{

                var result=db.collection(collectionName).find(json);

                result.toArray(function(err,docs){

                  if(err){
                        reject(err);
                        return;
                  }
                  resolve(docs);
                })

            })
      })
    }
    //改
    update(collectionName,json1,json2){
      return new Promise((resolve,reject)=>{


                this.connect().then((db)=>{

                  //db.user.update({},{$set:{}})
                  db.collection(collectionName).updateOne(json1,{
                        $set:json2
                  },(err,result)=>{
                        if(err){
                            reject(err);
                        }else{
                            resolve(result);
                        }
                  })

                })

      })

    }
    //数组操作 添加
    update2(collectionName,json1,json2){
      return new Promise((resolve,reject)=>{


                this.connect().then((db)=>{

                  //db.user.update({},{$set:{}})
                  db.collection(collectionName).updateOne(json1,{
                        $push:json2
                  },(err,result)=>{
                        if(err){
                            reject(err);
                        }else{
                            resolve(result);
                        }
                  })

                })

      })
    }
    // let data = await DB.update2("menuM",{"code" :"0" },{"data":{"fname":"xiong","lname":"lan"}})
    // let data = await DB.update3("menuM",{"code" :"0" },{"data":{"fname":"xiong","lname":"lan"}})
    //数组操作 删除
    update3(collectionName,json1,json2){
      return new Promise((resolve,reject)=>{

                this.connect().then((db)=>{
                  db.collection(collectionName).updateOne(json1,{
                        $pull:json2
                  },(err,result)=>{
                        if(err){
                            reject(err);
                        }else{
                            resolve(result);
                        }
                  })

                })

      })
    }
    //添加
    insert(collectionName,json){
      return newPromise((resolve,reject)=>{
            this.connect().then((db)=>{

                db.collection(collectionName).insertOne(json,function(err,result){
                  if(err){
                        reject(err);
                  }else{

                        resolve(result);
                  }
                })


            })
      })
    }
    // 移除一个   注意了版本号 我这里使用的是 deleteOne 在3.2之前不能用 这3.2是数据库的版本
    removeone(collectionName,json){

      return newPromise((resolve,reject)=>{
            this.connect().then((db)=>{

                db.collection(collectionName).deleteOne(json,function(err,result){
                  if(err){
                        reject(err);
                  }else{

                        resolve(result);
                  }
                })


            })
      })
    }

    // 移除一个集合所有数据
    removeall(collectionName,json){

      return newPromise((resolve,reject)=>{
            this.connect().then((db)=>{

                db.collection(collectionName).deleteMany(json,function(err,result){
                  if(err){
                        reject(err);
                  }else{
                        resolve(result);
                  }
                })


            })
      })
    }

    // 批量插入数据 需要数据库版本在 3.2之后 利用 insertMany() 被插入的是一个数组
    insertall(collectionName,arr){
      return newPromise((resolve,reject)=>{
            this.connect().then((db)=>{

                db.collection(collectionName).insertMany(arr,function(err,result){
                  if(err){
                        reject(err);
                  }else{
                        resolve(result);
                  }
                })


            })
      })
    }

   
    getObjectId(id){    /*mongodb里面查询 _id 把字符串转换成对象*/

      return new ObjectID(id);
    }
}


module.exports=Db.getInstance();


页: [1]
查看完整版本: 一些常用的mongodb命令