下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 06 | MongoDB基本操作
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

MongoDB高手课

共47讲 · 约500分钟
3288
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 认识文档数据库MongoDB
免费
04 | MongoDB特色及优势
免费
05 | 实验:安装MongoDB
06 | MongoDB基本操作
07 | 实验:Hello World程序开...
08 | 聚合查询
09 | 实验:聚合查询
10 | 复制集机制及原理
11 | 实验:搭建MongoDB复制集
12 | MongoDB全家桶
13 | 模型设计基础
14 | JSON文档模型设计特点
15 | 文档模型设计之一:基础设...
16 | 文档模型设计之二:工况细...
17 | 文档模型设计之三:模式套...
18 | 设计模式集锦

精选留言(13)

  • 2019-11-13
    这个MongoDB删除collection的时候,占用的存储空间也是立即就释放了的吗?
    7
    2
  • 2019-12-10
    这一节跟着唐老师学会了删库跑路.删库是掌握了,跑路还不是很熟悉具体流程,懂流程的可以指点一下
    1
  • 2019-12-02
    老师,看3.6的官方文档,删除是用deleteOne, deleteMany,这跟remove有什么区分吗

    作者回复: remove是mongo shell下的命令。deleteOne deleteMany是程序语言下的API。做的是类似的事情。

    1
  • 2019-11-20
    投影(projection)里面是不是可以对某个属性的表示形式做变换呢?比如将一个整数属性(保存的为1970年1月1日开始的毫秒数)转为日期格式表示?

    作者回复: 数据格式转换是4.0才开始支持的功能,本质上所有的转换都可以用`$convert`完成,但是转换为不同的数据类型时又有不同的简化版本。例如`$toInt`,`$toBool`,`$toDate`等。以下以使用最`$toDate`为例举例说明使用方式:

    ```javascript
    // 测试数据
    db.convertTest.insertMany([{
        date: new Date().getTime()
    }, {
        date: new Date().getTime() - 3600000
    }, {
        date: new Date().getTime() - 7200000
    }]);
    ```
    在`$project`中直接使用`$toDate`即可将epoch时间转换为日期类型:

    ```javascript
    db.convertTest.aggregate([{
        $project: {
            date: {
                $toDate: "$date"
            }
        }
    }]);
    ```

    参考:

    - `$convert`: https://docs.mongodb.com/manual/reference/operator/aggregation/convert/
    - `$toInt`: https://docs.mongodb.com/manual/reference/operator/aggregation/toInt/
    - `$toBool`: https://docs.mongodb.com/manual/reference/operator/aggregation/toBool/
    - `$toDate`: https://docs.mongodb.com/manual/reference/operator/aggregation/toDate/

    1
    1
  • 2019-12-10
    终于学会了跑路大法。
  • 2019-12-07
    唐老师您好,我在使用Robo 3T这个工具的过程中,对集合右键执行了 Drup Collection,执行之后,show collections 已经看不到那个集合,但是此前占用的存储空间没有变化。 请问下这个集合是否还存在? 如果存在是否可以恢复? 如果不存在,如何释放存储空间?
  • 2019-12-02
    最近遇到一个怪事,请教一下老师。最近我在六台主机上部署了一备二,三个分片的mongo分布式,开启了认证机制!在内网中完成了部署并能正常使用,但是当把内网网线拔掉,接上生产网络后,访问mongo却出现了认证失败错误!?为什么?全部重新启动mongo可恢复。另外分布式环境中,mongo如何做开机自启?

    作者回复: 关于1)比较难以判断实际情况。
    2)

    首先要把mongodb安装成service,参考Redhat的安装:

    https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

    然后用chkconfig命令启用开机自启动,这里有教程:

    https://blog.csdn.net/u013554213/article/details/78792686

    分布式环境下也是一样。如果你是说希望有那种中央化的管控,那你可以使用OpsManager,可以通过GUI对全部节点进行起停控制,并且是会在服务器宕机时候自动重启服务。

  • 2019-11-23
    老师能详细介绍一下 MongoDB 4.2 的新特性通配符索引(Wildcard Indexes)吗?
  • 2019-11-21
    对于传统SQL语句中类似update user set a=b 这种语句,在v4.2.1支持如下的写法:db.members.updateMany({},[{$set: {misc1: "$misc2"}}])来将一个属性中的值设到另一个属性中,在v4.0版本中则不支持。
  • 2019-11-21
    老师有个疑问说是MongoDB用的是B树来构建索引,那就像问下类似lt gt这种操作是基于B树的类似前中后序遍历来做范围查询么。
  • 2019-11-20
    db.fruit.find( { "from" : {country: "China"} } ),这个到底是在查什么呢?查一个json对象字段from的值是“{country: "China"}”吗?好像不是这样的。

    作者回复: 这个表示查找一个JSON文档,这个文档有一个字段叫做 from, 并且 from字段的内容就是 {country: "China"} ,不多也不少。

    1
  • 2019-11-18
    > db.orders.find({"orderLines":{$elemMatch:{"sku":"1400","qty":62}}},{"_id":0,"orderLines.sku":1,"orderLines.qty":1})
    { "orderLines" : [ { "sku" : "9569", "qty" : 75 }, { "sku" : "1400", "qty" : 62 }, { "sku" : "6156", "qty" : 43 }, { "sku" : "5983", "qty" : 36 }, { "sku" : "9183", "qty" : 34 }, { "sku" : "1145", "qty" : 93 }, { "sku" : "2056", "qty" : 19 }, { "sku" : "8706", "qty" : 1 }, { "sku" : "6951", "qty" : 10 }, { "sku" : "5129", "qty" : 58 }, { "sku" : "2069", "qty" : 96 } ] }
    >
    >
    是我语法有问题吗,用orders库,后面带了条件以后查询到的结果不匹配呢
    展开

    作者回复: 你是不是要这个:

    db.orders.find({
     "orderLines": {
      $elemMatch: {
       "sku": "1400",
       "qty": 62
      }
     }
    }, {
     "_id": 0,
     "orderLines.$": 1
    })

  • 2019-11-16
    mongo后天怎么启动

    作者回复: 请把问题描述清楚。

    1