Mongodb

Posted 混元天尊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb相关的知识,希望对你有一定的参考价值。

1、数据库的类型

  关系型数据库(SQL):mysql  Oracel  DB2  sybase  msSQL(微软旗下的SQL Server)

  非关系型数据库(NoSQL):MongoDB

2、MongoDB存的是json格式的数据

info = [
        {\'id\':1,
        \'name\':\'aa\'
       },
        {\'id\':2,
        \'name\':\'bb\'
        },
     ]    

3、MySQL 和 MongoDB 中的不同

数据库类型          MySQL                MongoDB

数据库              database                 db

数据表            table                 collections

数据行            row                   documents

字段             column                     filed

4、MongoDB 小操作

  show dbs  查看所有已经写入磁盘的数据库

  use + 数据库名  切换到当前数据库

  show tables  查看当前数据库中所有的表

  db  查看当前所使用的数据库

  MongoDB中如果没有数据,如果直接使用 use + 随便输入  都会提示已经切换到这个数据库,但是show dbs 的时候是没有的,因为这个只是单纯的在内存中创建的,而没有写入磁盘。

  

  ***使用不存在的对象即创建该对象

  

5、MongoDB 的增、删、改、查

  增:

    db.表名.insert({})

    官方推荐:

      db.表名.insertOne({})

      db.表名.insertMany([{},{},{}])

  查:

    db.表名.find()  查询所有的

    db.表名.findOne()  查询单条数据

  改:

    db.表名.update({条件},{$set:{数据}})

    官方推荐:

      db.表名.updateOne({条件},{$set:{数据}})  更新一条数据

      db.表名.updateMany({条件},{$set:{数据}})  更新所有数据

  删:

    db.表名.remove({条件})

    官方推荐:

      db.表名.deleteOne({条件})  删除一条数据

      db.表名.deleteMany({条件})  删除符合条件的所有数据

  清楚collections:

      db.表名.drop()

6、$关键字

  数学比符

    $gt  >

    $gte  >=

    $lt  <

    $lte  =<

    $eq  =

    :    =

7、修改器

  {$set:{name:1}}  简单粗暴的修改,将所有的name修改成1

  {$unset{name:1}}  简单粗暴的删除字段

  db.user_info.updateOne({age:200},{$unset:{age:1}})

  $inc  引用增加

  $push : 它是用来对Array (list)数据类型进行 增加 新元素的,相当于我们大Python中 list.append() 方法

  做一个小例子 :首先我们要先对原有数据增加一个Array类型的field:

  使用update $set 的方法只能为Document中的第一条添加

  使用updateMany $set 的方法 可以为所有满足条件的 Document 添加 "test_list" , 注意我这里的条件为空 " {} " 就算是为空,也要写上"{}" 记住记住记住

  接下来我们就要队列表进行添加了: 将 "score" 为 100 的Document 中"test_list" 添加一个 6

  $push 是在 Array(list) 的尾端加入一个新的元素  {$push : {"test_list" : 6}}

 

  $pull : 有了$push 对Array类型进行增加,就一定有办法对其内部进行删减,$pull 就是指定删除Array中的某一个元素

做一个例子: 把我们刚才$push进去的 6 删除掉

  问题来了,如果 Array 数据类型中 如果有 多个 6 怎么办呢?

  全部删掉了.....

  得出了一个结论,只要满足条件,就会将Array中所有满足条件的数据全部清除掉

 

  $pop : 指定删除Array中的第一个 或 最后一个 元素

  做个小例子: 删除"score" 等于 100 分  test_list 的最后一个元素

  怎么删除第一个呢?

  {$pop:{"test_list" : -1}}  -1 代表最前面, 1 代表最后边 (这和我们大Python正好相反) 记住哦

  $字符

  db.user_info.updateOne({hobby:6},{$set:{\'hobby.$\':\'六\'}})  # 将hobby为6的改成‘六’,"hobby.$"加引号就会看作一个整体,.$是是用来找到那个6数据的索引。

  object字典操作

  db.user_info.updateOne({name:"200wansui"},{$inc:{"info.tizhong":-5}})
  db.user_info.updateOne({name:"200wansui"},{$set:{"info.long":12.5}})

8、limit skip  sort  

  limit

    db.user_info.find({}).limit(5)

    从当前位置选择5个数据

  skip 跳过

    db.user_info.find({}).skip(2)

    从0开始跳过2条数据到当前位置

  sort 排序

    db.user_info.find({}).sort({\'id\':-1}) 

    根据id进行排序,-1为正序    1为倒叙

  limit + skip + sort

    db.user_info.find({}).limit(5).skip(10)
    db.user_info.find({}).limit(c).skip((p-1)*c)

    db.user_info.find({}).limit(5).skip(5).sort({ id:-1 })

    优先级最高的是 sort
    其次优先为 skip
    最低优先级 limit

以上是关于Mongodb的主要内容,如果未能解决你的问题,请参考以下文章

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

mongodb关联查询

无法在 MongoDB(猫鼬)文档中追加数组

在 Spring MongoDB 的 ReplaceRoot 管道阶段使用 $mergeObjects

如何创建一个查询来查找 2 个数字之间的值,这些数字是 MongoDB 中的字符串类型

MongoDB GridFS