mongodb学习(Document数据操作)

这篇博文主要学习mongodb中的Document的数据更新操作。包括了数据的”插入”,”更新”和”删除”。

Document数据插入

插入一条数据到document文档中用到的命令是”db.集合名称.insert(on=bj)” ,如图:

从图中可以看出在我插入一条数据之后,再次查询发现确实添加到集合中了。

那么如果我需要批量插入数据应该怎么操作呢??我们在之前已经说过了,mongodb的客户端shell实际上就是一个JavaScript引擎。因此我们可以通过for循环来执行操作。

如上图,我通过for循环实现批量插入数据的效果。

注意:

在mongodb中的插入中还存在一个save方法,那么他和insert方法的区别在哪里呢??什么时候该用save,什么时候又该用insert呢??

在我们进行插入操作的时候,如果使用save方法的时候,遇到”_id”相同的情况下save方法完成的是保存操作,如果使用insert方法,则会出错。

Document数据删除

删除列表中的所有数据

如果我需要删除列表中的所有数据,我可以这样写:

db.students.remove({})

注意这样只是删除了数据,索引并没有删除。

根据条件删除数据:

如果需要根据条件删除集合中的数据,可以这样写:

db.students.remove({条件})

可以看到,我首先添加了两条数据,然后删除age=11的那条数据,再次重新查询发现确实被删除了。

Update操作

update方法,顾名思义,就是当我执行该方法的时候,会首先根据该方法的查询条件进行查询,如果查询到了,则执行更新操作,如果没有查询到,则执行插入操作。

语法:db.集合名称.update({查询器},{修改器},true)

注意,如果想要让update方法有这样的特性,那么必须第三个参数填写上true。

可以看到当我的第三个参数设置为true的时候,此时,当我更新一个age=33的数据,没有查找到该数据的时候,会执行插入操作。

注意:

如果我利用update方法来更新数据的时候,如果此时有多条数据满足查询器,mongodb只会默认为我们更新第一条数据。比如:

从图中可以看出:我更新name=”wangwu”的数据,发现只有第一条满足条件的数据更新了,那么如果我需要批量更新,应该怎么操作呢??

可以这样写:

db.students.update({查询条件},{$set:{更新数据}},是否insertOrUpdate,是否批量更新)

可以看到这里用到了$set修改器。如下图:

mongodb修改器

mongodb为我们提供了很多修改器,用来实现数据的修改操作,下面是我在网上找到的一张关于mongodb的修改器。

$set:用来指定一个键值对,如果存在则修改,如果不存在则进行添加操作。如下图:

根据图片,我首先为name=”xiaoming”的更新一个age=44的数据,这个时候由于该条数据没有这个age键,所以会为该条数据添加age=44的键值对, 然而当我为name=”lisi”的数据设置age=25的时候,由于该条数据已经有了age这个键,所以会更新该键值对。

$inc:用来为指定的键对应的数字类型的数值进行加减操作,如下图:

从图中,可以看出,我为name=”xiaoming”的这条数据,利用$inc修改器来将该条数据的age键的值+2,如果需要减去2,则填写-2即可。

$unset:删除指定的键,如下图:

可以看到,我们将name=”xiaoming”的这条数据的age这个键成功去掉了。

$push修改器

$push修改器:

1.如果指定的键是数组,则追加新的数值。

2.如果指定的键不是数组,则中断当前操作。

3.如果不存在指定的键,则创建数组类型的键值对。

此时我利用$push修改器分别执行两次更新操作,第一次,没有scores这个键,所以创建了一个数组类型的键值对,第二次,由于已经存在这个键,所以会继续追加。

$pushAll修改器

pushAll修改器的用法和push修改器比较相似,他是用来批量的添加数组数据,比如我需要给name=”xiaoming”的文档中添加一个fruits[apple,orange,watermalon]这样的数据,

$addToSet修改器

$pushAll:当数组中存在需要添加的值,则什么都不做,如果数组中没有需要修改的值,则进行添加操作。

可以看到,当我第一次通过$addToSet修改器,为scores数组添加值为100的数据,由于已经存在这个值,所以什么都没有做,当我第二次添加值是88的数据,此时会添加进去。

$pop修改器

$pop修改器:从指定的数组中删除一个值:1表示最后一个值,-1表示第一个值。

可以看到,当我删除fruits数组中的数据,1表示删除最后一个,-1表示删除第一个。

$pull修改器

$pull修改器:用来删除一个指定的数值

我在这里,在执行$pull修改器删除fruits中orange这个值得前后,分别执行了”db.student.find()”发现已经成功删除。

$pullAll修改器

$pullAll修改器:用来删除数组中所有的数据

ok,今天关于mongodb中document数据的操作部分,就学习到这里了。

时间: 2024-11-03 21:14:54

mongodb学习(Document数据操作)的相关文章

MongoDB学习笔记(数据操作)

1.  批量插入:     以数组的方式一次插入多个文档可以在单次TCP请求中完成,避免了多次请求中的额外开销.就数据传输量而言,批量插入的数据中仅包含一份消息头,而多次单条插入则会在每次插入数据时封装消息头数据.对于数据导入而言,我们可以使用mongoimport完成. 2.  数据库清除:    > db.users.remove()     以上命令将会清除users集合中的所有数据,但是不会删除集合本身以及关联的索引.数据删除操作是不可恢复的,一旦删除就物理的删除了.对于全集合清除这种c

[Python] Python 学习 - 可视化数据操作(一)

Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文件目录 折线图 cube_squares.py import matplotlib.pyplot as plt x_values=list(range(1, 5000)) y_values=[pow(x, 3) for x in x_values] plt.scatter(x_values, y_v

Mongodb DB shell数据操作

shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的. Ø 数据库 1.Help查看命令提示 help db.help(); db.yourColl.help(); db.youColl.find().help(); rs.help(); 2.切换/创建数据库 >use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库 3.查询所有数据库 show dbs; 4.删除当前使用数据库 db.dropDatabas

hive学习笔记-数据操作

hive数据操作 hive命令行操作 hive -d --define <key=value> 定义一个key-value可以在命令行中使用 hive -d database <databasename>    指定使用的数据库 hive -e "hql"    不需要进入cli执行hql语句,可以在脚本中使用 hive -f fileName 将hql放到一个file文件中执行,sql语句来自file文件 hive -h hostname 访问主机,通过主机的

MongoDB 学习笔记(python操作)

一.MongoDB 数据库操作  1. 连接数据库    import pymongo    conn = pymongo.Connection() # 连接本机数据库    # conn = pymongo.Connection(host="192.168.1.202") # 连接指定IP的数据库    db = conn.test # 进入指定名称的数据库    users = db.users # 获取数据库里的 users 集合    users = db['users'] #

[转]MongoDB学习 C#驱动操作MongoDB

下载驱动 驱动的下载有两种方式:一种是在C#项目中通过NuGet进行安装,另一种是通过下面的链接:https://github.com/mongodb/mongo-csharp-driver/releases 直接下载msi进行安装或zip压缩包.不管哪种方式,其主要的目的都是获取两个dll文件:MongoDB.Bson.dll.MongoDB.Driver.dll.这是在程序中需要引用的两个类库文件. .NET版本要求 目前最新版的C#驱动是1.9.2,是在 .NET3.5的基础上构建的,所以

MongoDB学习笔记-数据库命令

概念 数据库命令(database command)是一种非常特殊类型的查询.文档的创建.更新.删除及查询都属于数据库命令的范畴,它还包含管理性的任务(比如关闭服务器和克隆数据库).统计数据及执行聚合操作等. runCommand函数 通常,只使用shell提供的函数就可以了,但是了解它们底层的命令是很有帮助的.尤其是当使用就版本shell连接到新版本的数据库上时,这个shell可能不支持新版数据库的一些命令,这时就不得不使用“数据库命令”的runCommand函数.使用方式:db.runCom

java对mongodb数据库进行数据操作

1 package mongodb; 2 3 import java.io.ByteArrayOutputStream; 4 import java.io.IOException; 5 import java.io.ObjectOutputStream; 6 import java.lang.reflect.Field; 7 import java.util.ArrayList; 8 import java.util.HashMap; 9 import java.util.Iterator; 1

MongoDB 1.5. 数据操作

插入 语法 db.集合名称.insert(document) 插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId 例1 db.stu.insert({name:'gj',gender:1}) 例2 s1={_id:'20160101',name:'hr'} s1.gender=0 db.stu.insert(s1) 简单查询 语法 db.集合名称.find() 更新 语法 db.集合名称.update( <query>, <update>, {m