美文网首页
MongoDB入门笔记-1-数据类型、插入、更新

MongoDB入门笔记-1-数据类型、插入、更新

作者: Captain_tu | 来源:发表于2019-04-22 14:18 被阅读0次
    1. 基本概念
      MongoDB由Databases组成,可通过use切换不同的DB。
      Databases由Collections(类比mysql的Table)组成。
      Collection由Documents(类比mysql的row)组成。
      Document由Fields(类比mysql的column)组成。

    2. 基本数据类型
      概念上,MongoDB的文档类似于Javascript中的对象,类似于JSON

      • null
        表示空值或者不存在的字段
      • 布尔类型
        true或者false
      • 数值
        默认采用64位浮点型
        整数可以采用NumberInt(4字节带符号整型)或者NumberLong(8字节带符号整型):
        {"x": NumberInt("5")}
        {"x": NumberLong("5")}
      • 字符串
      • 日期
        日期被存储为自新纪元以来的毫秒数,不存储时区。
      • 正则表达式
        查询时,使用正则作为限定条件
        {"x": /abc123/i}
      • 内嵌文档
        文档嵌套其他文档
        {"x": {"y": "abc"}}
      • 对象id
        对象id是一个12字节的ID,是文档的唯一标识
        {"x": ObjectId()}
    1. 基本操作
      • 插入
        db.foo.insert() :插入
        db.foo.insert({"name": "abc", "age": 25})
        db.foo.batchInsert() :批量插入
        db.foo.batchInsert([{"name": "abc", "age": 12}, {"name": "edf", "age": 23}])

      • 删除
        db.foo.remove() :不加参数会删除所有的文档,但是不会删除foo这个collection
        db.foo.remove({"name": "abc"})
        db.foo.drop() :删除集合

      • 更新
        db.foo.update({"name": "abc"}, {"name": "hihi"})
        不同于mysql,mongo会将后者完全替代第一个参数查出来的文档
        如果想只更新某一些值:

        1. 先查出这个文档,修改其中的值,然后用update替换
        2. 使用修改器,inc、set
          db.foo.update({"name": "abc"}, {"$set": {"name": "edf"}})
          db.foo.update({"name": "abc", {"$inc": {"age": 5}}})
      • upsert
        第三个参数加 true,可以在不存在的时候,插入这个文档
        db.foo.update({"name": "abc"}, {"name":"hihi", "age":12}, true)

      • 其他修改器

        1. $push
          如果数组存在,则向数组末尾添加一个元素,不存在则先创建一个新的
      • 更新多个文档
        将update的第四个参数设为true,可以更新多个文档

    数组。
    mongodb db.blog.posts.update({ "title": "A new blog" }, { "$push": {"comments": {"name": "hello", "email": "hello@gmail.com", "comments": ""Good post.}} })

      2. $addToSet
          可以向数据集添加新的元素,如果已经存在,则不会重复插入
          ```
          db.blog.user.insert({
              "name": "abc",
              "email": ["abc@163.com"]
          })
    
          db.blog.user.update({"name": "abc"}, 
              {"$addToSet": {"email": "abc@hotmail.com"}
          })
          ```
        3. $pop
            从数组中取出元素,1表示从尾删除,-1从头删除
            ```
            db.blog.user.update({"name":"nannan"}, {"$pop":{"email": -1}})
            ```
    
          4. $pull
              可以将数组中所有相等的值取出
    
              ![image.png](https://img.haomeiwen.com/i2434402/2652136be372c239.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
              ![image.png](https://img.haomeiwen.com/i2434402/0f5ebaa4b0e82778.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    相关文章

      网友评论

          本文标题:MongoDB入门笔记-1-数据类型、插入、更新

          本文链接:https://www.haomeiwen.com/subject/fbnegqtx.html