美文网首页
mongodb 基本用法

mongodb 基本用法

作者: 明里人 | 来源:发表于2019-05-14 11:13 被阅读0次
    解决不是内部命令:
      将mongo的地址配置到环检变量下的path:
      ;C:\Program Files\MongoDB\Server\3.4\bin
      将mongo执行存储数据库的文件夹:mongod --dbpath d:\mongodb (文件名)
      执行: mongo
    
    基本使用:
    1、导入文件中的数据
      注意:需重新打开一个cmd,不可在mongo运行后使用该命令
      mongoimport --db cyl --collection score --drop --file d:\data.txt
      mongoimport:导入数据库命令
      --db cyl:指定导入的数据库
      --collection score:指定导入的集合
      --drop:将集合清空后添加至数据库,省略为在原有数据基础上追加数据
      --file d:\data.txt:导入的文件目录
    2、列出所有数据库
      show dbs
    3、使用数据库
      use cyl   创建也是使用 use,但创建后使用 show dbs查看没有改数据库,需要添加数据才可列出该数据库
    4、查看当前所使用的数据库
      db
    5、删除数据库
      删除只能删除当前使用的数据库,所以删除数据库前需先使用要删除的数据库
      db.dropDatabase()
    5、显示当前数据库下的所有集合
      show collections
    6、创建集合
      db.collection.insert() //给集合添加数据即可创建集合
    7、删除集合
      db.collection.drop()
    
    一、插入数据
      插入数据时如果集合不存在,插入操作将创建集合
      插入文档操作遗漏_id字段时,mongodb自动为_id生成一个ObjectId
      1、db.collection.insertOne() 
        向集合插入单个文档 document
        db.users.insertOne(
          {
            name: 'cyl',
            age: '12',
            status: 'yes'
          }
        )
      2、db.collection.insertMany()
        向集合插入多个文档 document
        db.users.insertMany(
          [
            {name: 'cyl',age: '12',status: 'A'}
            {name: 'cyl',age: '12',status: 'B'}
            {name: 'cyl',age: '12',status: 'C'}
          ]
        )
      3、db.collection.insert()
        向集合中插入一个或多个文档
        插入一个:与insertOne一致
        插入多个:与insertMany一致,添加文档数组
    
    二、查询数据
      $gt:大于、  $lt:小于、  $gte:小于或等于、  $lte:小于或等于
      $ne:不等于!= 、 $eq = 、 /张/:模糊查找、 /^张/:张开头
      /张$/:张结尾、 $type:类型查询
      类型查询:db.collection.find({'title': {$type: 'string'}})//类型为string
      模糊查找:db.collection.find({name: /张/})
      排除查询:db.collection.find({age: {$ne: 12}}) // 除age为12的所有数据
      - 查询数据返回指定属性字段:如查询年龄小于20的数据的name
      db.collection.distinct('name',{age: {$lt: 20}})
    
      1、db.collection.find({})  //选择集合中所有文档
      2、指定查询过滤条件
        db.users.find( { status: 'A'} )
        db.users.find({
          status: {
            $in: ['P','D'] // 字段为P或者D的所有文档
          }
        })
      3、指定 and(和) 条件
        查询 status等于A 并且 age 小于 30
        db.users.find(
          { status: 'A',age: { $lt: 30}}
        )
      4、指定 or(或) 条件
        db.users.find(
          {
            $or: [{status: 'A'}, {age: { $lt: 30}}]
          }
        )
      5、sort排序(1为正序,-1为倒序)
        db.score.find().sort({age: 1, ...(多条件排序)})
      6、取指定条数 limit
        db.score.find().limit(2)  // 为0时显示所有数据
      7、跳过指定条数 skip
        db.score,find().skip(2)
        //分页查询使用skip决定从哪个位置开始
        skip = (pageIndex - 1) * pageNum
      8、结合使用
        db.score.find().sort({age: 1}).skip(2).limit(2)
      9、查询数量
        db.collection.count()
        db.collection.find({条件}).count()
        db.collection.count({条件})
    
    三、更新操作
      1、db.collection.updateOne():更新匹配到的一个文档
        db.score.update({name: '沈八'},{$set: {age: 12}}) // 修改一行
        // 符合条件都修改
        db.score.update({sex: '男'},{$set: {age: 12}},{multi: true}) 
        //完整替换
        db.score.update({sex: '男'},{age: 12}) 将sex 为 男的 一条数据内容替换为 age=12; // 不使用$set替换后,该条数据只有_id与age两个属性
      2、db.collection.uploadMany():更新所有匹配到的文档
      3、db.collection.replaceOne():最多只替换一个文档
      4、db.collection.update():最多只更新或替换一个文档
    
    四、删除操作
      1、db.collection.remove({sex: '女'}) //条件删除 会删除所有符合条件数据
      2、db.collection.remove({sex: '女'},{justOne: true}) //只删除一个
      3、db.collection.remove({}) // 删除集合中所有的文档
    
    五、node 操作 mongodb
      1、下载mongodb模板
        cnpm install mongodb --save-dev
      2、引入
        const mongodb = require('mongodb')
        const mongoClient = mobgodb.mongoClient;
        mongoClient.connect('mongodb://127.0.0.1:27017',{useNewUrlParser: true },function(err,client){
          // useNewUrlParser: true 解决URL字符串解析器被抛弃的方案
          // client表示 mongodb
        if(err){console.log('连接数据库失败');}
          client.db('cyl'); //创建数据库
          db.collection('store').inserOne();// 创建集合并插入数据 或者
          db.createCollection('store',function(err,res){});
        })
      3、find查找后对数据操作的方法
        -1、pretty():让查找的数据更直观的展示
        -2、toArray():将查找的数据以数组的形式展现
      4、聚合管道 aggregate:
        当前命令的输出结果作为下一个命令的参数
        聚合框架中的几种操作:(按顺序使用)
        $project:修改输入文档的结构
        $match:用于过滤数据
        $sort:将输入的文档排序后输出 
        $skip:跳转指定数量的文档
        $limit:文档个数
        使用左连接:$lookup
        {
          from: '' //左集合 要和哪个集合进行合并
          localField:''  //左集合要连接的字段
          foreignField:'' //外部的集合连接的字段
          as:'' // 找到的信息放到该字段中(类型array)
        }
      5、封装一个node连接mongodb
        const mongodb = require('mongodb');
        const mongoClient = mongodb.MongoClient;
        function _connect(cb){
          mongoClient.connect("mongodb://127.0.0.1:27017",{useNewUrlParser: true},function(err,client){
            cb(client.db('cyl'))
          })
        }
        module.express.insertOne = function(coll,obj,cb){
          _connect(function(db){
            db.collection(coll).insertOne(obj,cb);
          })
        }
    

    相关文章

      网友评论

          本文标题:mongodb 基本用法

          本文链接:https://www.haomeiwen.com/subject/pzojaqtx.html