码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MongoDB 语法大全


    文章目录

    • 前言
      • MongoDB 语法大全
        • 01、mongodb 数据库链接
        • 02、help查看命令提示
        • 03、如果数据库存在,则切换到指定的数据库;如果数据库不存在,则创建数据库
        • 04、查询所有的数据库
        • 05、查看当前数据库
          • 05::01 查看当前数据库状态
          • 05::02 查看当前数据库版本
          • 05::03 查看当前数据库链接机器
        • 06、插入
        • 07、查询
          • 07::01 查询
          • 07::02 查询只返回一条数据
          • 07::03 条件and查询
          • 07::04 条件or查询
          • 07::05 条件and 和 or 查询
          • 07::06 条件操作符查询
          • 07::07 模糊查询
          • 07::08 $type 操作符查询
          • 07::09 去重某列重复数据查询
          • 07::10、in、not in 查询
          • 07::11 指定字段返回
        • 08、排序
          • 08::01、升序
          • 08::02、降序
        • 09、查询前3条数据
        • 10、查询3条以后数据
        • 11、分页
        • 12、查询当前集合总数
        • 13、删除当前数据库
        • 14、新建集合
        • 15、删除集合
        • 16、获取当前db指定名称的聚集集合
        • 17、获取当前db所有聚集集合
        • 18、查询当前集合数量
        • 19、查询当前集合的数据空间大小
        • 20、查询当前集合总大小
        • 21、查询当前集合存储空间大小
        • 22、集合重命名
        • 23、查询当前集合所在数据库
        • 24、插入语法
        • 25、修改
          • 25::01、修改集合中现有的文档
          • 25::02、根据过滤器更新集合中的单个文档
          • 25::03、更新与集合指定的筛选器匹配的所有文档
        • 26、删除
        • 27、for循环
        • 28、添加用户

    前言

      如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
      而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


    MongoDB 语法大全

    01、mongodb 数据库链接

    格式:mongodb:// [username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

    其中mongodb:// 是必须要有的。
    username:password@ : -可选项 如果设置,链接数据库服务后会尝试登录该数据库
    database :-可选项 如果指定username:password@ 链接验证指定数据库,不指定链接test数据库
    options :链接选项,如果不使用database 前面需加上/,所有链接选项都是键值对name=value,多个选项时,以&或;分隔。

    02、help查看命令提示

    help();
    db.help();
    db.新建集合.help();
    例子:db.yangzhenyu.help();
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    03、如果数据库存在,则切换到指定的数据库;如果数据库不存在,则创建数据库

    use 数据库名;
    use yangzhenyu
    
    • 1
    • 2

    在这里插入图片描述

    04、查询所有的数据库

    // 01 插入一条数据,否则show dbs;不显示
    db.yangzhenyu.insert({"name":"hello world!!!"});
    // 02 查询所有数据库
    show dbs;
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    05、查看当前数据库

    db;或者 db.getName();
    
    • 1

    在这里插入图片描述

    05::01 查看当前数据库状态

    db.stats();
    
    • 1

    在这里插入图片描述

    05::02 查看当前数据库版本

    db.version();
    
    • 1

    在这里插入图片描述

    05::03 查看当前数据库链接机器

    db.getMongo();
    
    • 1

    在这里插入图片描述

    06、插入

    db.集合.insert();
    在mongoDB中,不需要主动创建集合,当你插入文档时会自动创建
    db.yangzhenyu.insert({"xxx":"yang","age":"27","yyy":"zhenyu"});
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    07、查询

    07::01 查询

    db.集合.find()
    db.yangzhenyu.find();
    
    • 1
    • 2

    在这里插入图片描述

    07::02 查询只返回一条数据

    db.集合.findOne();
    db.yangzhenyu.findOne()
    
    • 1
    • 2

    在这里插入图片描述

    07::03 条件and查询

    db.集合.find({"key1":"name1","key2","name2"});
    db.yangzhenyu.find({"xxx":"yang","age":"27"})
    
    • 1
    • 2

    在这里插入图片描述

    07::04 条件or查询

    db.集合.find({
       $or:[
          {"key1":"name1"},{"key2":"name2"}
       ]
    })
    
    db.yangzhenyu.find({
    $or:[
    {"name":"hello world!!!"}, {"age":"27"}
    ]
    })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    07::05 条件and 和 or 查询

    db.集合.find({
       "key0":"name0",
       $or:[
          {"key1":"name1"},{"key2":"name2"}
       ]
    })
    相当于: key0=name0 and (key1=name1 or key2=name2)
    db.yangzhenyu.find({
    "age":"27",
    $or:[
    {"name":"hello world!!!"}, {"age":"27"}
    ]
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    07::06 条件操作符查询

    >大于$gt
    <小于$lt
    >=大于等于$gte
    <=小于等于$lte
    !=不等于$ne
    db.yangzhenyu.find({
    "age":{$gt:"26"}
    
    });
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    07::07 模糊查询

    db.集合.find({"字段":/查询内容/});
    
    // 模糊查询-包含2
    db.yangzhenyu.find({
    "age":/2/
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    // 模糊查询-以2开头
    db.yangzhenyu.find({
    "age":/^2/
    });
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    //模糊查询-小写kul
    db.yangzhenyu.find({
    "yyy":/kul/
    });
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    //模糊查询-忽略大小写
    db.yangzhenyu.find({
    "yyy":/kul/i
    });
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    07::08 $type 操作符查询

    $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果
    准备:
    创建集合typeTest,并插入两条数据
    db.typeTest.insert({"name":"yangzhenyu","age":"27"});
    db.typeTest.insert({"name":"yangzhenyu","age":27});
    查询:
    db.typeTest.find();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    查询age字段为String的数据
    db.yzyTest.find({"age":{
    $type:'string'
    }});
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    查询age字段为int的数据
    db.typeTest.find({"age":{
    $type:'int'
    }});
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    07::09 去重某列重复数据查询

    db.yangzhenyu.find();
    
    
    • 1
    • 2

    在这里插入图片描述

    age字段 去重查询:
    db.yangzhenyu.distinct("age");
    
    • 1
    • 2

    在这里插入图片描述

    07::10、in、not in 查询

    in查询:
    db.集合.find({
    _id:{$in:["no1","no2"]}
    });
    not in 查询
    db.集合.find({
    _id:{$nin:["no1"]}
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    07::11 指定字段返回

    db.yzy.find({},{name:1});
    db.集合.find(
    query,
    projection
    )
    projection: 指定返回字段
    格式: {字段1:1,字段2:1}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    08、排序

    08::01、升序

    查询集合.sort({字段名:1})
    db.yangzhenyu.find().sort({age:1})
    
    • 1
    • 2

    在这里插入图片描述

    08::02、降序

    查询集合.sort({字段名:-1})
    db.yangzhenyu.find().sort({age:-1})
    
    • 1
    • 2

    在这里插入图片描述

    09、查询前3条数据

    查询集合.limit(3);
    db.yangzhenyu.find().limit(3);
    
    • 1
    • 2

    在这里插入图片描述

    10、查询3条以后数据

    查询集合.skip(3);
    db.yangzhenyu.find().skip(3);
    
    • 1
    • 2

    在这里插入图片描述

    11、分页

    查询集合.limit(pagesize).skip(第几页的pagesize);
    //limit相当于pagesize skip相当于第几页的pagesize
    1-3
    db.yangzhenyu.find().limit(3).skip(0);
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3-6
    db.yangzhenyu.find().limit(3).skip(3);
    
    • 1
    • 2

    在这里插入图片描述

    6-9
    db.yangzhenyu.find().limit(3).skip(6);
    
    • 1
    • 2

    在这里插入图片描述
    相当于mysql的limit函数

    12、查询当前集合总数

    查询集合.count();
    db.yangzhenyu.find().count();
    
    • 1
    • 2

    在这里插入图片描述

    13、删除当前数据库

    db.dropDatabase();
    
    • 1

    14、新建集合

    //创建固定集合
    db.createCollection("yzyTest",{
    capped:true,size:6142800,max:1000
    
    });
    capped - 如果为true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值,会自动覆盖最早的文档,当值为true时,必须指定size参数。
    size - 为固定集合指定一个最大值,即字节数。
    max - 指定固定集合中包含文档的最大数量。
    注:在插入文档时,mongoDB首先检查固定集合的size字段,然后检查max字段。
    //查看已有集合
    show collections;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    //在mongoDB中,不需要主动创建,当你插入文档时会自动创建
    db.yzyTest1.insert({"name":"yangzhenyu","age":"27"})
    //查看已有集合
    show collections;
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    15、删除集合

    db.集合.drop();
    db.yzyTest1.drop();
    //查看已有集合
    show collections;
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    16、获取当前db指定名称的聚集集合

    db.getCollection("yzyTest");
    
    
    • 1
    • 2

    在这里插入图片描述

    17、获取当前db所有聚集集合

    db.getCollectionNames();
    
    
    • 1
    • 2

    在这里插入图片描述

    18、查询当前集合数量

    db.yzyTest.count();
    
    • 1

    在这里插入图片描述

    19、查询当前集合的数据空间大小

    db.yzyTest.dataSize();
    
    • 1

    在这里插入图片描述

    20、查询当前集合总大小

    db.yzyTest.totalSize();
    
    • 1

    在这里插入图片描述

    21、查询当前集合存储空间大小

    db.yzyTest.storageSize();
    
    • 1

    在这里插入图片描述

    22、集合重命名

    db.yzyTest.renameCollection("yzyRenameTest");
    
    • 1

    在这里插入图片描述

    show collections;
    
    • 1

    在这里插入图片描述

    23、查询当前集合所在数据库

    db.yzyRenameTest.getDB();
    
    • 1

    在这里插入图片描述

    24、插入语法

    //插入一条数据
    db.集合.insertOne({_id:"01",name:"yang",age:"12"});
    //插入多条
    db.集合.insertMany([{_id:"02",name:"yang",age:"12"},{_id:"03",name:"yang",age:"12"}])
    
    • 1
    • 2
    • 3
    • 4

    25、修改

    25::01、修改集合中现有的文档

    db.集合.update(
      <query>,
      <update>
    )
    query  :update的查询条件,即where后的语句条件;
    update  : 更新值,也可理解为sql update中set后面的语句;
    注:默认只更新找到的第一条;
    
    例子:
    db.yzy.find();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    //只更新找到的第一条
    db.yzy.update({age:"12"},{$set:{age:"13"}});
    db.yzy.find();
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    25::02、根据过滤器更新集合中的单个文档

    实例:
    db.yzy.find();
    在这里插入图片描述

    db.yzy.updateOne({age:"12"},{$set:{age:"13"}});
    db.yzy.find();
    
    • 1
    • 2

    在这里插入图片描述

    25::03、更新与集合指定的筛选器匹配的所有文档

    db.yzy.find();
    
    • 1

    在这里插入图片描述

    db.yzy.updateMany({age:"12"},{$set:{age:"13"}});
    db.yzy.find();
    
    • 1
    • 2

    在这里插入图片描述

    26、删除

    从集合中删除单个文档
    db.yzy.deleteOne({age:"13"})
    
    • 1
    • 2

    在这里插入图片描述

    从集合中删除与筛选器匹配的所有文档
    db.yzy.deleteMany({age:"13"})
    
    • 1
    • 2

    在这里插入图片描述

    27、for循环

    db.yzy.find().forEach(
        function(item){
            if(item.age >= 12){
               db.yzy.updateOne({age:item.age},{$set:{age:"13"}});
            }
        }
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    28、添加用户

    db.createUser( {
    	user: "sa",
    	pwd: "sa",
    	roles: [ { role: "root", db: "admin" } ]
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    白话电子签章原理及风险
    水库大坝安全监测是什么和主要作用?
    9月5日关键点检测学习笔记——人体骨骼点检测:自顶向下
    小白刷力扣 之SQL学习计划 第3天(第1667题,第1484题,第1527题)
    python学习笔记
    PHP:判断四个点能不能组成一个矩形(附完整源码)
    原来都是crontab惹的祸,服务器系统差点重置了/呜呜呜
    Codeforces Round #752 (Div. 1) B. Moderate Modular Mode
    学习Java8 Stream流,让我们更加便捷的操纵集合
    解决Kibana(OpenSearch)某些字段无法搜索问题
  • 原文地址:https://blog.csdn.net/weixin_38316697/article/details/126085968
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号