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

posted @ 2020-04-17 12:43  牛犁heart  阅读(337)  评论(0编辑  收藏  举报