zoukankan      html  css  js  c++  java
  • MongoDB的增删改查

    创建数据库
    语法
    MongoDB创建数据库的语法格式如下:

    use DATABASE_NAME

    如果数据库不存在,则创建数据库,负责切换到指定数据库
    例子:

    发现我们创建的数据库data并不在数据库列表中,要显示它,就必须要往data数据库中插入数据。

    这里要说明下,MongoDB中默认数据库为test,如果没有创建数据库,直接将数据(集合)放入未创建的数据库中,这时,MongoDB是将该集合存放在了test数据库中,而并没有创建该数据库,再把集合放进去(这么复杂,它好像还做不来^_^)

    上例,我想往数据库中存入集合,但我忘记创建该数据库,这条语句将会将集合a存入到test数据库

    删除数据库
    语法
    MongoDB删除数据库的语法格式为:

    db.dropDatabase()
    

    删除当前数据库,默认为test,可使用db命令查看当前数据库名。
    例子:
    以删除刚才我们创建的data数据库为例

    可通过show dbs命令查看数据库是否删除成功

    删除集合
    语法格式:

    db.collection.drop()
    

    例子中插入两个集合a,b,使用该命令将集合a删除

    在删除数据库与集合操作中,当将集合删除完之后,使用show dbs查看数据库时,发现当前数据库已经没有了,给我种感觉,数据库因集合存在而存在,也因集合消失而消失,但集合却未因数据库存在而存在,即使没有数据库,它还可以栖息于test数据库中

    插入文档
    文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。
    BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON
    MongoDB使用insert()或save()方法向集合中插入文档,语法如下:

    db.COLLECTION_NAME.insert(document)
    

    例子:
    以下文档可以存储在data数据库的data1集合中

    data1集合,如果不在该数据库中,MongoDB会自动创建该集合并插入文档
    db.data1.find()查看data1集合中数据(文档)
    也可以将数据定义为一个变量,然后插入集合

    执行插入操作并查看

    db.data1.save(document)使用方法与insert类似。如果不指定_id字段save()方法类似于insert()方法。如果指定_id字段,则会更新_id字段 **更新文档** MongoDB使用update()函数更新
    db.collection.update(criteria,objNew,upsert,multi)
    

    update()函数接受一下四个参数:

    • criteria:update的查询条件,类似SQL update查询内where后面的
    • objNew:update的对象和一些更新的操作符(如(,)inc...)等,也可以理解为sql update查询内set后面的
    • upsert:如果不存在update的记录,是否插入objNew,true为插入,默认为false,不插入
    • multi:MongoDB默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来的多条记录全部更新

    向data数据库中插入名为“userDetails”的集合,以下是要插入的数据:

    document=({"user_id" : "MNOPBWN","password" :"MNOPBWN" ,"date_of_join" : "16/10/2010" 
    ,"education" :"M.C.A." , "profession" : "CONSULTANT","interest" : "MUSIC","community_name" :["MODERN MUSIC", 
    "CLASSICAL MUSIC","WESTERN MUSIC"],"community_moder_id" : ["MR. BBB","MR. JJJ","MR MMM"],"community_members" : 
    [500,200,1500],"friends_id" : ["MMM123","NNN123","OOO123"],"ban_friends_id" :["BAN123","BAN456","BAN789"]});
    

     document=({"user_id" : "QRSTBWN","password" :"QRSTBWN" ,"date_of_join" : "17/10/2010" ,"education" :"M.B.A." 
    , "profession" : "MARKETING","interest" : "MUSIC","community_name" :["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN 
    MUSIC"],"community_moder_id" : ["MR. BBB","MR. JJJ","MR MMM"],"community_members" : [500,200,1500],"friends_id" :
     ["MMM123","NNN123","OOO123"],"ban_friends_id" :["BAN123","BAN456","BAN789"]});
    

    使用update()命令更新数据
    目标:将"userdetails"集合中"user_id"为"QRSTBWN"的"password"字段修改为"NEWPASSWORD"。(如果criteria参数匹配集合中的任何一条数据,它将会执行替换命令,否则会插入一条新的数据。)

    查看更新后的数据:

    若想值修改某个字段,而不希望将整个文档中的数据重写一遍,可采用下面的方法:
    只更新一条记录:

    全部更新:

    只添加一条:

    全部添加进去:

    $inc 字段值加1

    删除文档
    MongoDB remove()函数用来移除集合中的数据
    MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
    remove()方法的基本语法格式如下:

    db.collection.remove(
        <query>,
        <justOne>
    )
    

    参数说明:

    • query:(可选)删除的文档的条件
    • justOne:(可选)为true或1,则只删除一个文档
    • writeConcern:(可选)抛出异常的级别

    可看到删除了三条数据
    如果想只删除一条找到的记录,可将justOne设置为1,如下:
    db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
    若想删除所有数据,可采用以下方式:

    查询文档
    语法
    MongoDB查询数据的语法格式如下:

    db.COLLECTION_NAME.find()
    

    find() 方法以非结构化的方式来显示所有文档。
    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

    db.col.find().pretty()
    

    pretty() 方法以格式化的方式来显示所有文档。
    例子:
    以上面用到的userdetail集合为例:

    除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。


    MongoDB 与 RDBMS Where 语句比较

    MongoDB AND 条件
    MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,及常规 SQL 的 AND 条件。
    语法格式如下:

    db.col.find({key1:value1, key2:value2}).pretty()
    

    例子:

    相当于where语句: where name = "" AND education=""


    MongoDB OR条件
    MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

    db.col.find(
       {
          $or: [
    	     {key1: value1}, {key2:value2}
          ]
       }
    ).pretty()
    

    AND 和 OR 联合使用

    参考:https://www.w3cschool.cn/mongodb/mongodb-query.html

  • 相关阅读:
    毕设随笔 ssm框架搭建
    ubuntu18.04安装mysql与workbench
    Ubuntu18.04安装破解Intellij IDEA
    快慢指针--快乐数判断
    二维数组,深度优先算法 -- 岛屿数量
    动态规划--打家劫舍
    大数据课程笔记 1
    递归--上下翻转二叉树
    python课程设计笔记(五) ----Resuests+BeautifulSoup (爬虫入门)
    Git Learning Part III
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12711806.html
Copyright © 2011-2022 走看看