mongodb中$的作用
2018-01-07 17:50
211 查看
定义
定位符$的确定数组中一个要被更新的元素的位置,而不用具体指定该元素在数组中的位置。用法
1.更新数组中的值1)语法格式
{"<array>.$": value}
2)示例
创建集合students有以下文档:
db.students.insert([ { "_id" : 1, "grades" : [ 85, 80, 80 ] }, { "_id" : 2, "grades" : [ 88, 90, 92 ] }, { "_id" : 3, "grades" : [ 85, 100, 90 ] } ])
将grades数组中第一个值为80更新为82,如果你不知道第一个值的具体位置,就可以像下面这样写:
db.students.updateOne( { _id: 1, grades: 80 }, { $set: { "grades.$" : 82 } } )
定位符$像一个占位符,匹配第一个符合查询条件的值的位置。
2.更新数组中的文档
定位符为更新那些包含嵌入文档的数组提供了方便。要取得嵌入文档中的字段属性值,在后面使用点符号。如一下语法格式描述:
1)语法格式
db.collection.update( { <query selector> }, { <update operator>: { "array.$.field" : value } } )
2)举例
假设students集合中grades数组包含以下嵌入的文档:
{ _id: 4, grades: [ { grade: 80, mean: 75, std: 8 }, { grade: 85, mean: 90, std: 5 }, { grade: 85, mean: 85, std: 8 } ] }
使用$定位符去更新grades数组中文档中字段std的值,被更新的文档是第一个匹配grade值为85的文档。如下:
db.students.updateOne( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } )
跟新后的结果为:
{ "_id" : 4, "grades" : [ { "grade" : 80, "mean" : 75, "std" : 8 }, { "grade" : 85, "mean" : 90, "std" : 6 }, { "grade" : 85, "mean" : 85, "std" : 8 } ] }
相关文章推荐
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- mongodb中投票节点作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- MongoDB+Mysql这样架构,mysql的作用是什么?
- 在centos7上作用mongodb
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- redis、memcache、mongoDB性能对比及关系和作用
- 【MongoDB】--dbpath的作用及如何以Windows Service的方式启动MongoDB
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- mongodb 特殊作用的数据库
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb的索引的作用和用法--mongodb
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用