这篇文章将为大家详细讲解有关MongoDB中数组类型的操作示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在MongoDB的模式中,我们经常将一些数据存储到数组类型中,即我们常见的嵌套模式设计的一种实现方式。数组的这种设计实现方式在关系数据库中是没有或者说不常见的,所以,通过本文我们来梳理一下MongoDB的数组的相关操作。关于数组的操作可以分成两类,一类是数组操作符,另一个是数组运算修饰符。
<强>数组操作符强>
美元根据查询选择器定位要更新的文档推动美元添加值到数组中美元pushAll添加数组到一个数组中。(将被美元瑞秋取代)美元addToSet添加值到数组中,重复了也不处理
流行从美元数组中删除第一个或者最后一个值。将美元从数组中删除匹配查询条件的值。美元pullAll从数组中删除多个值。<强>数组运算修饰符强>
每个与推动美元和美元addToSet一起使用来操作多个值。每个一片与推动美元和美元起使用来缩小更新后数组的大小,排序与推动美元美元,美元片一起来排序数组中的子文档。 1。美元推操作符
1.1语法及功能描述
美元推主要用来向数组中添加元素。
语法:
{$推:{& lt; field1>: & lt; value1>,…}}
默认情况下,它会在数组尾部添加一个单独的元素。
1.2操作案例
假如我们有一个学生成绩的集合studentscore,其文档格式如下:
{“_id":1、“name":“xiaoming",“score":[{“math":99年,“english":89}} {“_id":2,“name":“xiaohong",“score":[{“math":98年,“english":96}]}
其中的需求为,更新_id为1的文档记录,在分数数组的字段上,添加物理学的成绩,修改代码为
db.studentscore。更新({_id: 1}、{$推:{得分:{“physics": 100}}})
修改后,结果查询如下:
{“_id":1、“name":“xiaoming",“score":[{“math":99年,“english":89},{“physics":100}} {“_id":2,“name":“xiaohong",“score":[{“math":98年,“english":96}]}
1.3结合美元每个修饰符,批量插入
如果一次将多个值添加到数组中,可结合数组修改符,<代码类=" xref mongodb mongodb-update docutils文字"> 代码>
<代码类=" xref mongodb mongodb-update docutils文字"> 代码>
db.studentscore。更新({_id: 2}, { 推动美元:{ 得分:{ 每一美元:[{“physics": 100}, {“chemistry": 90}, {“biology": 99}] } } } )
查询的结果如下:
{“_id":1、“name":“xiaoming",“score":[{“math":99年,“english":89},{“physics":100}} {“_id":2,“name":“xiaohong",“score":[{“math":98年,“english":96},{“physics":100},{“chemistry":90},{“biology":99}]}
1.4数组修饰符排序和切片的美元使用
前面讲了每个数美元组运算修饰符,那我们再举一个例子,将剩余的两个修饰符一起讲解了好了(排序和片美元)
例如,我们有文档记录如下:
{ “_id": 5 “quizzes":【 {“wk": 1、“score":10}, {“wk": 2,“score":8}, {“wk": 3,“score":5}, {“wk": 4,“score":6} ] }
现在我们,有个需求,就是首先向文档的测试数组字段,追加三个记录,然后,我们再按照得分排序,选取数组中的前三个元素。
db.students.update ( {_id: 5}, { 推动美元:{ 小测验:{ 每一美元:[{工作:5,得分:8},{周:6,分数:7},{工作:7,分数:6}), 美元:{得分:1}, 美元片:3 } } } )
更新后的结果显示如下:
{ “_id": 5 “quizzes":【 {“wk":1、“score":10}, {“wk":2,“score":8}, {“wk":5“score":8}]}
美元片操作修饰符是在MongoDB 2.4里添加的,其目的是方便管理经常更新的数组。当向数组添加值但是不想数组太大的时候,这个操作符非常有用。它必须与推动美元,美元每个操作符一起使用,允许用来剪短数组的大小,删除旧的值。
与美元片操作修饰符很像,MongoDB 2.4新增了美元排序操作修饰符,帮助更新数组。当使用推和切片时,美元有时候要先排序再删除它们。