• 技术文章 >数据库 >MongoDB

    MongoDB 4.X基础教程

    P粉469731340P粉4697313402022-07-20 09:47:22原创610
    一、MongoDB介绍

     { "userName":"admin", "password":123456 }

    二、MongoDB安装

    1.MongoDB下载

    2.MongoDB安装

    2.png

    全程点击next安装,但是这一步需要注意,这里是安装可视化组件,默认是选择状态,这里需 要取消选中,否则在安装的过程中要下载可视化组件,比较慢,甚至有时候会报错:

    3.png

    3.MongoDB环境变量配置

    4.png

    5.png

    4.验证安装是否成功

    C:\Users\***.DESKTOP-C1RC9P2>mongo
    MongoDB shell version v4.4.2-rc0
    connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("df31999e-cb62-4f71-8a18-7db8723c514f") }
    MongoDB server version: 4.4.2-rc0
    ---
    The server generated these startup warnings when booting:
    2020-10-30T16:25:16.503+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
    ---
    ---
    Enable MongoDB's free cloud-based monitoring service, which will then receive and display
    metrics about your deployment (disk utilization, CPU, operation statistics, etc).

    The monitoring data will be available on a MongoDB website with a unique URL accessible to you
    and anyone you share the URL with. MongoDB may use this information to make product
    improvements and to suggest MongoDB products and deployment options to you.

    To enable free monitoring, run the following command: db.enableFreeMonitoring()
    To permanently disable this reminder, run the following command: db.disableFreeMonitoring()

    三、MongoDB使用基本介绍

    1.查看数据库名

    命令:
    show dbs
      > show dbs
    admin 0.000GB
    config 0.000GB
    local 0.000GB

    2. 查看集合

    命令:
    ues 数据库名 show collections
    > use admin 
    switched to db admin
    > show collections
    system.version

    3.查询集合中的数据

    命令:
    db.集合名.find()
    > db.system.version.find()
    { "_id" : "featureCompatibilityVersion", "version" : "4.4" }

    四、创建数据库及添加数据

    MongoDB不能够直接创建数据库,需要添加一条数据才能创建

    1.创建数据库和插入数据

    > use company
    switched to db company
    > db.emp.insert({"empno":100,"ename":"admin","sex":"男","age":20,"salary":800.00,"deptno":10})
    WriteResult({ "nInserted" : 1 })
    WriteResult({ "nInserted" : 1 })
    >  db.emp.insert({"empno":101,"ename":"张三","sex":"女","age":30,"salary":2500.00,"deptno":20})})})})
    WriteResult({ "nInserted" : 1 })

    五、查询数据

    查询所有数据,在查询数据前要先指定使用哪个数据库,再查询数据库中的所有集合,根据相应集 合再查询数据。

    1.查询所有数据

    命令:
    db.集合名.find()
    指定对哪个数据库操作
    > use company
    switched to db company
    查询指定数据库后里面的所有集合
    > show collections
    emp
    查询所有数据,一共12条数据:
    > db.emp.find()

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 34, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 34, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 33, "salary" : 10000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }
    { "_id" : ObjectId("5f9c371b5df291fa8194b927"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c376a29491ade8d9d3e79"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 32, "salary" : 1600, "deptno" : 30 }

    2.去掉集合中重复的数据

    命令:
    > db.集合名.distinct("ename")
    > db.emp.distinct("ename")

    [
    "admin",
    "刘静",
    "张三",
    "张四",
    "张良",
    "李元芳",
    "李元静",
    "李四",
    "李明",
    "李菲菲",
    "王三"
    ]

    3. 查询年龄等于25的数据

    > db.emp.find({"age":25})

    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }

    4. 查询ename=“李元芳“的数据

    > db.emp.find({"ename":"李元芳"})

    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }

    5. 查询age>30岁的员工数据

    > db.emp.find({"age":{$gt:30}})

    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }

    6. 查询age<25的员工数据

    > db.emp.find({"age":{$lt:25}})

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }

    7.查询age>=30的员工数据

    > db.emp.find({"age":{$gte:30}})

    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }

    8. 查询age<=30的员工数据

    > db.emp.find({"age":{$lte:30}})

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }

    9. 查询age>=25并且age<=30的员工数据

    > db.emp.find({"age":{$gte:25,$lte:30}})

    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }

    10. 查询全部姓李的员工数据(模糊查询)

    > db.emp.find({"ename":/李/})

    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }

    11. 查询姓名以“张”开头的员工数据

    > db.emp.find({"ename":/^张/})

    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }

    12. 查询以姓名以“静”结尾的员工数据

    > db.emp.find({"ename":/静$/})

    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }

    13. 查询指定列的员工数据

    > db.emp.find({},{"age":1})

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "age" : 20 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "age" : 30 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "age" : 25 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "age" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "age" : 28 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "age" : 32 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "age" : 35 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "age" : 35 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "age" : 27 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "age" : 35 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "age" : 35 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "age" : 25 }
    > db.emp.find({},{"ename":1,"age":1})

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "ename" : "admin", "age" : 20 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "ename" : "张三", "age" : 30 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "ename" : "张良", "age" : 25 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "ename" : "李明", "age" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "ename" : "李菲菲", "age" : 28 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "ename" : "张四", "age" : 32 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "ename" : "李四", "age" : 35 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "ename" : "李四", "age" : 35 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "ename" : "王三", "age" : 27 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "ename" : "李元芳", "age" : 35 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "ename" : "李元静", "age" : 35 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "ename" : "刘静", "age" : 25 }
    > db.emp.find({"age":{$gte:30}},{"ename":1,"age":1,"salary":1})

    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "ename" : "张三", "age" : 30, "salary" : 2500 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "ename" : "李明", "age" : 30, "salary" : 1800 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "ename" : "张四", "age" : 32, "salary" : 8000 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "ename" : "李四", "age" : 35, "salary" : 12000 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "ename" : "李四", "age" : 35, "salary" : 12000 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "ename" : "李元芳", "age" : 35, "salary" : 8000 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "ename" : "李元静", "age" : 35, "salary" : 15000 }

    14. 排序

    > db.emp.find().sort({"age":1})

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }
    > db.emp.find().sort({salary:-1})

    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }

    15. 查询ename=admin且age=20的员工数据

    > db.emp.find({ename:"admin",age:20})

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }

    16. 查询前5条数据

    > db.emp.find().limit(5)

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }

    17. 查询10条以后的数据

    > db.emp.find().skip(10)

    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }

    18. 查询集合中的总数据

    > db.emp.find().count()

    12
    > db.emp.find({salary:{$gte:5000}}).count()

    6

    验证(查询查询salary>=5000的员工数据,一共是6条。)

    > db.emp.find({salary:{$gte:5000}})

    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }

    19. 分页查询

    第一页:
    > db.emp.find().skip(0).limit(5)

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }
    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c20945df291fa8194b91d"), "empno" : 102, "ename" : "张良", "sex" : "男", "age" : 25, "salary" : 3000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c215f5df291fa8194b91f"), "empno" : 104, "ename" : "李菲菲", "sex" : "女", "age" : 28, "salary" : 4200, "deptno" : 20 }

    第二页:
    > db.emp.find().skip(5).limit(5)

    { "_id" : ObjectId("5f9c21855df291fa8194b920"), "empno" : 105, "ename" : "张四", "sex" : "男", "age" : 32, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21d85df291fa8194b923"), "empno" : 107, "ename" : "王三", "sex" : "女", "age" : 27, "salary" : 5000, "deptno" : 20 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }

    第三页:
    > db.emp.find().skip(10).limit(5)

    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }
    { "_id" : ObjectId("5f9c227d5df291fa8194b926"), "empno" : 110, "ename" : "刘静", "sex" : "女", "age" : 25, "salary" : 3500, "deptno" : 10 }

    20.关键字or的查询方式

    > db.emp.find({$or:[{age:30},{age:35}]})

    { "_id" : ObjectId("5f9c1dfc5df291fa8194b91c"), "empno" : 101, "ename" : "张三", "sex" : "女", "age" : 30, "salary" : 2500, "deptno" : 20 }
    { "_id" : ObjectId("5f9c21055df291fa8194b91e"), "empno" : 103, "ename" : "李明", "sex" : "女", "age" : 30, "salary" : 1800, "deptno" : 30 }
    { "_id" : ObjectId("5f9c219b5df291fa8194b921"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c21a75df291fa8194b922"), "empno" : 106, "ename" : "李四", "sex" : "男", "age" : 35, "salary" : 12000, "deptno" : 10 }
    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 35, "salary" : 8000, "deptno" : 30 }
    { "_id" : ObjectId("5f9c22445df291fa8194b925"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 35, "salary" : 15000, "deptno" : 36 }

    21. 查询第一条数据

    > db.emp.findOne()
    {
    "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"),
    "empno" : 100,
    "ename" : "admin",
    "sex" : "男",
    "age" : 20,
    "salary" : 800,
    "deptno" : 10
    }


    > db.emp.find().limit(1)

    { "_id" : ObjectId("5f9c1c5b5df291fa8194b91b"), "empno" : 100, "ename" : "admin", "sex" : "男", "age" : 20, "salary" : 800, "deptno" : 10 }

    22. 查询当前表所在的数据库

    > db.emp.getDB()

    company

    六、更新数据

    1. 更新员工李元静的年龄为32岁

    > db.emp.update({ename:"李元静"},{$set:{age:32}})

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

    验证(查询姓名是李元静的员工数据)

    > db.emp.find({ename:"李元静"})

    { "_id" : ObjectId("5f9c376a29491ade8d9d3e79"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 32, "salary" : 15000, "deptno" : 36 }

    2. 更新员工李元静的薪资为1600并且所在部门修改为30

    > db.emp.update({ename:"李元静"},{$set:{salary:1600,deptno:30}})

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.emp.find({ename:"李元静"})

    { "_id" : ObjectId("5f9c376a29491ade8d9d3e79"), "empno" : 109, "ename" : "李元静", "sex" : "女", "age" : 32, "salary" : 1600, "deptno" : 30 }

    3. 批量更新数据

    > db.emp.update({age:35},{$set:{age:34}},{multi:true})

    WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

    4. $inc使用

    > db.emp.update({ename:"李元芳"},{$inc:{age:-1,salary:2000}})

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.emp.find({ename:"李元芳"})

    { "_id" : ObjectId("5f9c22185df291fa8194b924"), "empno" : 108, "ename" : "李元芳", "sex" : "男", "age" : 33, "salary" : 10000, "deptno" : 30 }

    七、删除操作

    1. 删除指定条件的数据

    db.emp.remove({ename:"李元芳"})

    2. 删除所有数据

    db.emp.remove({})

    3. 删除集合

    db.emp.drop()

    4.删除数据库

    db.dropDatabase()

    5. 温馨提示

    八、MongoDB数据库索引

    1. 模拟批量插入数据

    > use com
    switched to db com
    > for(var i=0;i<600000;i++){
    ... db.users.insert({userNo:i,userName:"张三"+i,age:28,phone:"13000"+i})
    ... }
    WriteResult({ "nInserted" : 1 })
    > db.users.find().count()
    600000

    2.无索引查询所耗费时间

    命令: 
    db.users.find({userNo:599999}).explain("executionStats")
    > db.users.find({userNo:599999}).explain("executionStats")
    {
    "queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "com.users",
    "indexFilterSet" : false,
    "parsedQuery" : {
    "userNo" : {
    "$eq" : 599999
    }
    },
    "winningPlan" : {
    "stage" : "COLLSCAN",
    "filter" : {
    "userNo" : {
    "$eq" : 599999
    }
    },
    "direction" : "forward"
    },
    "rejectedPlans" : [ ]
    },
    "executionStats" : {
    "executionSuccess" : true,
    "nReturned" : 1,
    "executionTimeMillis" : 254,
    "totalKeysExamined" : 0,
    "totalDocsExamined" : 600000,
    "executionStages" : {
    "stage" : "COLLSCAN",
    "filter" : {
    "userNo" : {
    "$eq" : 599999
    }
    },
    "nReturned" : 1,
    "executionTimeMillisEstimate" : 3,
    "works" : 600002,
    "advanced" : 1,
    "needTime" : 600000,
    "needYield" : 0,
    "saveState" : 600,
    "restoreState" : 600,
    "isEOF" : 1,
    "direction" : "forward",
    "docsExamined" : 600000
    }
    },
    "serverInfo" : {
    "host" : "thinkPadE580",
    "port" : 27017,
    "version" : "4.4.2-rc0",
    "gitVersion" : "b5fafa1f87dda6f8773c5a8a1a5e7776d4d94da7"
    },
    "ok" : 1
    }

    3. 创建索引

    命令:
    db.users.ensureIndex({userNo:1})
    > db.users.ensureIndex({userNo:1})
    {
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
    }

    4. 查询索引

    命令:
    db.users.getIndexes()
    > db.users.getIndexes()
    [
    {
    "v" : 2,
    "key" : {
    "_id" : 1
    },
    "name" : "_id_"
    },
    {
    "v" : 2,
    "key" : {
    "userNo" : 1
    },
    "name" : "userNo_1"
    }
    ]

    5. 使用索引查询所耗费时间

    > db.users.find({userNo:599999}).explain("executionStats")
    {
    "queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "com.users",
    "indexFilterSet" : false,
    "parsedQuery" : {
    "userNo" : {
    "$eq" : 599999
    }
    },
    "winningPlan" : {
    "stage" : "FETCH",
    "inputStage" : {
    "stage" : "IXSCAN",
    "keyPattern" : {
    "userNo" : 1
    },
    "indexName" : "userNo_1",
    "isMultiKey" : false,
    "multiKeyPaths" : {
    "userNo" : [ ]
    },
    "isUnique" : false,
    "isSparse" : false,
    "isPartial" : false,
    "indexVersion" : 2,
    "direction" : "forward",
    "indexBounds" : {
    "userNo" : [
    "[599999.0, 599999.0]"
    ]
    }
    }
    },
    "rejectedPlans" : [ ]
    },
    "executionStats" : {
    "executionSuccess" : true,
    "nReturned" : 1,
    "executionTimeMillis" : 84,
    "totalKeysExamined" : 1,
    "totalDocsExamined" : 1,
    "executionStages" : {
    "stage" : "FETCH",
    "nReturned" : 1,
    "executionTimeMillisEstimate" : 0,
    "works" : 2,
    "advanced" : 1,
    "needTime" : 0,
    "needYield" : 0,
    "saveState" : 0,
    "restoreState" : 0,
    "isEOF" : 1,
    "docsExamined" : 1,
    "alreadyHasObj" : 0,
    "inputStage" : {
    "stage" : "IXSCAN",
    "nReturned" : 1,
    "executionTimeMillisEstimate" : 0,
    "works" : 2,
    "advanced" : 1,
    "needTime" : 0,
    "needYield" : 0,
    "saveState" : 0,
    "restoreState" : 0,
    "isEOF" : 1,
    "keyPattern" : {
    "userNo" : 1
    },
    "indexName" : "userNo_1",
    "isMultiKey" : false,
    "multiKeyPaths" : {
    "userNo" : [ ]
    },
    "isUnique" : false,
    "isSparse" : false,
    "isPartial" : false,
    "indexVersion" : 2,
    "direction" : "forward",
    "indexBounds" : {
    "userNo" : [
    "[599999.0, 599999.0]"
    ]
    },
    "keysExamined" : 1,
    "seeks" : 1,
    "dupsTested" : 0,
    "dupsDropped" : 0
    }
    }
    },
    "serverInfo" : {
    "host" : "thinkPadE580",
    "port" : 27017,
    "version" : "4.4.2-rc0",
    "gitVersion" : "b5fafa1f87dda6f8773c5a8a1a5e7776d4d94da7"
    },
    "ok" : 1
    }

    6. 删除索引

    命令:
    db.users.dropIndex({userNo:1})

    验证

    > db.users.dropIndex({userNo:1})
    { "nIndexesWas" : 2, "ok" : 1 }

    7. 复合索引

    > db.users.ensureIndex({userNo:1,userName:1})
    {
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
    }
    > db.users.getIndexes()
    [
    {
    "v" : 2,
    "key" : {
    "_id" : 1
    },
    "name" : "_id_"
    },
    {
    "v" : 2,
    "key" : {
    "userNo" : 1,
    "userName" : 1
    },
    "name" : "userNo_1_userName_1"
    }
    ]
    > db.users.find({userNo:599999,userName:"张三599999"}).explain("executionStats")))
    {
    "queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "com.users",
    "indexFilterSet" : false,
    "parsedQuery" : {
    "$and" : [
    {
    "userName" : {
    "$eq" : "张三599999"
    }
    },
    {
    "userNo" : {
    "$eq" : 599999
    }
    }
    ]
    },
    "winningPlan" : {
    "stage" : "FETCH",
    "inputStage" : {
    "stage" : "IXSCAN",
    "keyPattern" : {
    "userNo" : 1,
    "userName" : 1
    },
    "indexName" : "userNo_1_userName_1",
    "isMultiKey" : false,
    "multiKeyPaths" : {
    "userNo" : [ ],
    "userName" : [ ]
    },
    "isUnique" : false,
    "isSparse" : false,
    "isPartial" : false,
    "indexVersion" : 2,
    "direction" : "forward",
    "indexBounds" : {
    "userNo" : [
    "[599999.0, 599999.0]"
    ],
    "userName" : [
    "[\"张三599999\", \"张三599999\"]"
    ]
    }
    }
    },
    "rejectedPlans" : [ ]
    },
    "executionStats" : {
    "executionSuccess" : true,
    "nReturned" : 1,
    "executionTimeMillis" : 2,
    "totalKeysExamined" : 1,
    "totalDocsExamined" : 1,
    "executionStages" : {
    "stage" : "FETCH",
    "nReturned" : 1,
    "executionTimeMillisEstimate" : 0,
    "works" : 2,
    "advanced" : 1,
    "needTime" : 0,
    "needYield" : 0,
    "saveState" : 0,
    "restoreState" : 0,
    "isEOF" : 1,
    "docsExamined" : 1,
    "alreadyHasObj" : 0,
    "inputStage" : {
    "stage" : "IXSCAN",
    "nReturned" : 1,
    "executionTimeMillisEstimate" : 0,
    "works" : 2,
    "advanced" : 1,
    "needTime" : 0,
    "needYield" : 0,
    "saveState" : 0,
    "restoreState" : 0,
    "isEOF" : 1,
    "keyPattern" : {
    "userNo" : 1,
    "userName" : 1
    },
    "indexName" : "userNo_1_userName_1",
    "isMultiKey" : false,
    "multiKeyPaths" : {
    "userNo" : [ ],
    "userName" : [ ]
    },
    "isUnique" : false,
    "isSparse" : false,
    "isPartial" : false,
    "indexVersion" : 2,
    "direction" : "forward",
    "indexBounds" : {
    "userNo" : [
    "[599999.0, 599999.0]"
    ],
    "userName" : [
    "[\"张三599999\", \"张三599999\"]"
    ]
    },
    "keysExamined" : 1,
    "seeks" : 1,
    "dupsTested" : 0,
    "dupsDropped" : 0
    }
    }
    },
    "serverInfo" : {
    "host" : "thinkPadE580",
    "port" : 27017,
    "version" : "4.4.2-rc0",
    "gitVersion" : "b5fafa1f87dda6f8773c5a8a1a5e7776d4d94da7"
    },
    "ok" : 1
    }

    8.唯一索引

    命令:
    > db.users.ensure({age:1},{unique:true})
    > db.users.ensure({age:1},{unique:true})
    TypeError: db.users.ensure is not a function :
    @(shell):1:1

    以上就是MongoDB 4.X基础教程的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:MongoDB
    上一篇:带你聊聊MongoDB中丰富的索引类型 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• mac 怎么安装php mongodb• 聊聊node中怎么使用Nest.js 连接 MongoDB 数据库• 带你聊聊MongoDB中丰富的索引类型• linux怎么安装mongodb• mysql与mongodb有什么区别
    1/1

    PHP中文网