MongoDB 更新文档
MongoDB 使用update()和save()方法来更新集合中的文档。
update() 方法
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(<query>,<update>,{upinsert:<boolean>,multi:<boolean>,writeConcern:<boolean>};
参数说明:
query:update的查询条件,
update:update的对象和一些更新的操作符(如$,$inc...)等,
upinsert:可选,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi: 可选,mongodb 默认是false,只更新找到的第一条记录,如果参数为true,就把按条件查出来多条记录全部更新。
writeConcern:可选,抛出异常的级别。
Example
我们这里更新上一节插入的数据,按照name来更新:
update方法更新文档实例图可以看到Evan的密码由原来的12306改成了Evan;如果需要更新多条记录的话则需要将multi属性设置为true;
save()方法
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save(<document>,{writeConcern:<boolean>};
参数说明
document: 新的文档数据;
writeConcern: 可选,抛出异常的级别。
Example
下面我们要替换_id为584f57701ec0d6a2350c47a7的文档数据。
save方法更新文档实例图从上图可以看出,原来的_id为584f57701ec0d6a2350c47a7的文档被新的文档替换了。
MongoDB 删除文档
remove()函数是用来移除集合中的数据。语法格式如下:
db.collection.remove( <query>, { justOne:<boolean> , writeConcern:<boolean> }) ;
参数说明
query:(可选)删除文档的条件,
justOne:(可选)如果设为1或者true,则只删除一个匹配的文档。
writeConcern:(可选)抛出异常的级别
Example
我们已之前的数据为例:
实例数据图1接下来我们移除名称(name)为‘Lukes’的文档:
实例数据图2从上图可以发现名称(name)为‘Lukes’的文档已经被删除了。
如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:
db.COLLECTION_NAME.remove(query,1)
如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
db.DBName.remove({})
MongoDB 查询文档
语法格式:
>db.COLLECTION_NAME.find()
find() 方法以非结构化的方式来显示所有文档。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.db_test.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
Example
查询文档实例图1除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
操作格式范例RDBMS中的类似语句
等于{:} db.db_test.find({"name":"Lukes"}).pretty() where name= 'Lukes'
小于{:{$lt:}} db.db_test.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于{:{$lte:}} db.db_test.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于{:{$gt:}} db.db_test.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于{:{$gte:}} db.db_test.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于{:{$ne:}} db.db_test.find({"likes":{$ne:50}}).pretty() where likes != 50
MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,及常规 SQL 的 AND 条件。
语法格式如下:
>db.db_test.find({key1:value1,key2:value2}).pretty()
Example
以下实例通过name和password键来查询数据
查询数据实例图2以上实例中类似于 WHERE 语句:WHERE name='Evan' AND password='123456'
MongoDB OR 条件
MongoDB OR 条件语句使用了关键字$or,语法格式如下:
>db.db_test.find({$or: [{key1:value1},{key2:value2}] }).pretty()
Example
以下实例中,我们演示了查询键name值为 Evan 或键password值为Evan的文档。
查询文档实例图3
网友评论