MongoDB学习(二)

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

以下实例通过namepassword键来查询数据

查询数据实例图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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容