zoukankan      html  css  js  c++  java
  • Mongodb(三):Mongodb的增删改查(1)

    学Mongodb之前,最好先了解一下JSON这种数据格式,Mongodb中的BSON是JSON的一种扩展,和JSON差不多,如果懂JSON的话,学起来会容易很

    多,当然JSON也是很容易上手的。

    (1):插入(insert)可以有两种,单个的插入document和批量的插入document

          a. 插入一条document:  示例:db.persons.insert({"_id":"001", "name":"zhangsan", "age":23})

          

          说明:可以理解成就是以JSON格式进行增加,findOne()是查询第一条记录.

          b.批量插入:说白了,就是插入一个数组:,如下:

          

          说明:在老的版本中好像还不支持批量插入,但是新的版本已经支持了,在老的版本中,可以写一个for循环实现批量增加,既然新

          版本已经有了批量增加,就用这种方式吧。

    (2) save操作:save操作和insert操作区别在于当遇到_id相同的情况下,save会对那条数据进行跟新操作,insert则会报错。如下:

          

    (3) remove操作:删除数据。不带条件全部删除:db.persons.remove().下面写一个带条件删除的:db.persons.remove({"_id":"003"}),

        如下:

       

    (4):update操作:update操作中的修改器会在下篇再说,这里说一下:强硬的文档替换式更新操作,说白了,就是将先前的记录删除掉,

        再添加一条新的(也可以说成是整体更新),如下:db.persons.update({"_id":"001"}, {"age":22})

        

        说明:a.update方法语法:update(查询条件, 更新结果); <其实并不止两个参数,后面会接触到>

          b.从上面的结果可以看出,虽然age这个字段得到了更新,但是name字段却没有了,这就是强硬的document替换式更新操作,

               就是用新的这一条替换原来那一条。后面所讲的修改器是一种局部的更新。

          c.注意:主键冲突的时候会报错并且停止更新操作 ,因为是强硬替换当替换的文档和已有文档ID冲突的时候 ,则系统会报错

    (5): upsert操作:顾名思义,这是两个单词的缩写:update和insert,这个操作的目的是如果有这个数据,就进行更新操作,如果没有

         这个数据就进行插入操作。但是要注意,其实并没有upsert这个方法,upsert只是一种说法,它的实现还是靠update方法来做的。

         将update方法的第三个参数改成true即可做到upsert。 

         如下:db.persons.update({"_id":"003"},{"name":"wangwu"},true)  

        

        从结果可以看出,要更新的数据在原本的数据中不存在,所有就添加了一条数据,不过_id值是自动生成的,不能指定(这里有点纠

        结,为什么不用我的_id呢?)。

    (6):批量更新操作, 在默认情况只会更新符合条件的第一条,即使有多条数据符合查询条件,也只会更新第一条数据,如下:

        

        那如何做到全部更新呢?将update方法的第四个参数改为true即可,

        如下:db.persons({"name":"wangwu"}, {"name":"zhaoliu"},false,true)

        

       注意:上图中刚开始的时候报了一个错:multi update only works with $ operators,就是说如果用了批量更新,就只能够

       进行局部更新,而不能进行整体更新。$set是一个修改器,是进行局部更新操作的。可以把它看成是一个特殊的键(时刻牢记JSON的

       格式就不会晕)。下篇就会讲修改器。

  • 相关阅读:
    为什么我的tomcat启动不起来?
    图解leetcode —— 128. 最长连续序列
    java实现单链表增删改查
    搞定java String校招面试题
    java反射快速入门
    java中线程安全,线程死锁,线程通信快速入门
    理清Java中try-catch-finally带return的执行顺序
    Java可变参数与Collections工具类使用了解
    HashMap常见面试题整理
    ArrayList去除重复元素(多种方法实现)
  • 原文地址:https://www.cnblogs.com/wuxilc/p/4045642.html
Copyright © 2011-2022 走看看