mongodb 的安装和基础语法笔记

mongodb 的安装和基础语法笔记

  1. mongodb的安装
    • windows下
      • 直接去官网进行下载
      • 配置系统环境变量
      • 启动服务,使用电脑中的服务进行启动
      • net start mongodb
      • net stop mongodb
      • 添加账号密码
        • 在终端启动mongo
        • use admin
        • 添加账户
          db.createUser({
            user: 'admin',  // 用户名
            pwd: '123456',  // 密码
            roles:[{
              role: 'root',  // 角色
              db: 'admin'  // 数据库
            }]
          })
          
        • 在安装目录中,修改mongo.cfg文件
          • 将 #security 修改为
            security:
            authorization: enabled
            
        • 在服务中关闭重启mongo
    • ubuntu 上安装mongo
      • 安装
        • sudo apt-get install mongodb
      • 在Linux终端进入mongo的交互,直接输入mongo
      • 启动和停止mongo
         sudo service mongodb stop   
         sudo service mongodb start
      
      • 设置账户密码
        mongo
        use admin
        db.addUser("root","密码")
        
      • 修改配置文件
        • vi /etc/mongodb.conf
        •   bind_ip = 0.0.0.0  或者 #bind_ip 127.0.0.1
            port = 27017
            auth=true (添加帐号,密码认证)
          
      • 重启mongo,service mongodb start
      • 进入mongo之后,需要使用 db.auth('user','pwd') 才能修改操作
        2 mongo的命令
    • 创建数据库
      • use 数据库名 这个数据库存在的话会进入数据库,不存在的话会创建数据库,并切换到数据库
    • 创建集合
      • db.createCollection("集合名")
    • 查看集合
      • show collections
  2. pymongo 的使用
    • 安装pymongo pip install pymongo
    • 连接pymongo
      • 方法一:
          import pymongo
          conn = pymongo.MongoClient('mongodb://{}:{}@{}:{}/?authSource={}'.format("账号","密码","网址","端口","密码验证数据库"))
          db = conn.数据库名
          collection = db.表名
        
      • 方法二:
          from pymongo import MongoClient
          client = MongoClient('localhost',27017)
          client.验证的数据库表(一般为admin).authenticate("用户名","密码")
          db = client.数据库名
          collection = db.表名
        
    • 插入数据
      • 使用collection.insertone或collection.insertmany
      • 如果想要不重复的插入数据
        collection.update_one ({'数据表中的字段1':数据['对应字段1'],'数据表中字段2':数据['对应字段2']},{'$set':数据},True)
        collection.update_one ({'id':data['id'],'name':data['name']},{'$set':data},True)
        
  3. mongodb中的操作语句
    • 基本命令
      • 创建数据库
        • use 数据库名 如果数据库不存在则创建数据库名,如果存在则切换到指定数据库
      • 查看所有的数据库
        • show dbs
      • 删除
        • 删除数据库
          • db.dropDatabase() 这样便会删除当前所在的数据库
        • 删除集合
          • db.collection.drop() 这样会删除db后面的collection集合
      • 创建集合
        • db.createCollection(name, options) 这样便会创建一个集合
      • 插入文档
        • 使用insert或save方法往集合中插入文档
        • db.COLLECTION_NAME.insert(document)
        • db.COLLECTION_NAME.save(document)
        • save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
        • insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
        • 最新的有insertOne()和insertMany()
      • 更新文档
        • update() 方法用于更新已存在的文档。语法格式如下:
        •   db.collection.update(
               <query>,
               <update>,
               {
                 upsert: <boolean>,
                 multi: <boolean>,
                 writeConcern: <document>
               }
            )
          参数说明:
            query : update的查询条件,类似sql update查询内where后面的。
            update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
            upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
            multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
            writeConcern :可选,抛出异常的级别。
          
        • save方法,主键存在就更新,主键不存在就插入
      • 删除文档
        • 语法
          db.collection.remove(
             <query>,
             {
               justOne: <boolean>,
               writeConcern: <document>
             }
          )
          
        • 删除所有文档
          • db.col.remove({})
      • 查询文档
        • db.collection.find(query, projection)
          • query :可选,使用查询操作符指定查询条件
          • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
        • db.col.find().pretty() 显示化所有文档
        • AND条件 ongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
        • OR条件 MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
          • $or:[{},{}…]
      • 条件操作符
        • (>) 大于 - $gt
        • (<) 小于 - $lt
        • (>=) 大于等于 - $gte
        • (<= ) 小于等于 - $lte
        • 使用{‘列名’:{$gt:21}}
        • 模糊查询:
          • 查询 title 包含"教"字的文档:
          • db.col.find({title:/教/})
          • 查询 title 字段以"教"字开头的文档:
          • db.col.find({title:/^教/})
          • 查询 titl e字段以"教"字结尾的文档:
          • db.col.find({title:/教$/})
      • $type操作符
        • $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
        • $type:double ,String, Object ,Array ,Binary data, Object id,
          Boolean ,Date, Null,Regular Expression,JavaScript ,Symbol ,JavaScript (with scope),
      • Limit与Skip方法
        • limit()方法基本语法如下所示:
          • db.COLLECTION_NAME.find().limit(NUMBER)
        • 还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
          • db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
      • 排序
        • 在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
        • db.COLLECTION_NAME.find().sort({KEY:1})
      • 索引
        • MongoDB使用 createIndex() 方法来创建索引
        • db.collection.createIndex(keys, options)
        • 语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可.createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)
      • 聚合
        • MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果
        • aggregate() 方法 MongoDB中聚合的方法使用aggregate()。
        • db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
        • 表达式
          • 表达式 描述 实例
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {sum : “$likes”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {avg : “$likes”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {min : “$likes”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …um_tutorial : {max : “$likes”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …_user", url : {push: “$url”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …_user", url : {addToSet : “$url”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …, first_url : {first : “$url”}}}])
          • KaTeX parse error: Expected '}', got 'EOF' at end of input: …ol.aggregate([{group : {_id : "KaTeX parse error: Expected '}', got 'EOF' at end of input: …", last_url : {last : “$url”}}}])
    • pymongo
      • pymongo 查询出来的数据是游标的形式,需要通过list转换成数据的形式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值