SequoiaDB 简介
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
{ <字段名.$+标识符>: <value> }
$+标识符是一种特殊的命令符,只作用于数组对象,用于代替数组元素的索引,并且可以把匹配到的第一个索引值传递到 update 的 rule 参数中。
标识符相当于临时的存储,会将匹配成功的数组元素索引进行存储。标识符须为整数,错误的书写格式如 $5.4、$a2、$3c、$MA 等。
集合 sample.employee 存在如下记录:
{a:[1,2,2,4,5]} {a:[1,4,5]} {a:[4,2,1]}
查询 a 字段中存在元素 5 的记录
> db.sample.employee.find({"a.$1":5},{"a":1}) { "a": [ 1, 2, 2, 4, 5 ] } { "a": [ 1, 4, 5 ] } Return 2 row(s).
操作 a 字段,将值为 4 的元素修改为 100
> db.sample.employee.update({$set:{"a.$1":100}},{"a.$1":4})
此操作后,记录更新结果如下:
{a:[1,2,2,100,5]} {a:[1,100,5]} {a:[100,2,1]}
操作 a 字段,将值为 2 的元素修改为 2000
> db.sample.employee.update({$set:{"a.$1":2000}},{"a.$1":2})
此操作后,记录更新结果如下:
{a:[1,2000,2,4,5]} {a:[1,4,5]} {a:[4,2000,1]}
Note:
如果同一数组记录中存在多个符合匹配条件的元素,则操作仅对匹配到的第一个元素有效。
操作 a 字段,将值为 4 的元素修改为 600,将值为 1 的元素修改为 200
> db.sample.employee.update({$set:{"a.$1":600,"a.$2":200}},{"a.$1":4,"a.$2":1})
此操作后,记录更新结果如下:
{a:[200,2,2,600,5]} {a:[200,600,5]} {a:[600,2,200]}
集合 sample.employee 存在如下记录:
{a:[{id:2}]} {a:[{id:1},{id:3,num:3}, {id:4,num:4}]} {a:[{id:1,num:1}, {id:2,num:2}, {id:3,num:3}, {id:4,num:4}, {id:2}]}
查询 a 字段中存在元素{id:2}的记录
> db.sample.employee.find({"a.$1":{"id":2}}) { "_id": { "$oid": "601136504328ca603a7fffe6" }, "a": [ { "id": 2 } ] } { "_id": { "$oid": "6011367d4328ca603a7fffe8" }, "a": [ { "id": 1, "num": 1 }, { "id": 2, "num": 2 }, { "id": 3, "num": 3 }, { "id": 4, "num": 4 }, { "id": 2 } ] } Return 2 row(s).
操作 a 字段,使用 $elemMatch 匹配数组中存在{id:2}的记录,并将该记录的 id 修改为 100
> db.sample.employee.update({$set:{"a.$1.id":100}},{"a.$1":{$elemMatch:{"id":2}}})
此操作后,记录更新结果如下:
{a:[{id:100}]} {a:[{id:1},{id:3,num:3}, {id:4,num:4}]} {a:[{id:1,num:1}, {id:100,num:2}, {id:3,num:3}, {id:4,num:4}, {id:2}]}
Note:
如果同一数组记录中存在多个符合匹配条件的元素,则操作仅对匹配到的第一个元素有效。
操作 a 字段,匹配数组中存在{"id":1,"num":1}的记录,并将该记录的 id 修改为 500,num 修改为 300
> db.sample.employee.update({$set:{"a.$1.id":500,"a.$1.num":300}},{"a.$1":{"id":1,"num":1}})
此操作后,记录更新结果如下:
{a:[{id:2}]} {a:[{id:1},{id:3,num:3}, {id:4,num:4}]} {a:[{id:500,num:300}, {id:2,num:2}, {id:3,num:3}, {id:4,num:4}, {id:2}]}
操作 a 字段,匹配数组中存在{"id":3,"num":3}的记录,将该记录的 id 修改为 30;匹配数组中存在{"id":4,"num":4}的记录,将该记录的 num 修改为 40
> db.sample.employee.update({$set:{"a.$1.id":30,"a.$2.num":40}},{"a.$1":{"id":3,"num":3},"a.$2":{"id":4,"num":4}})
此操作后,记录更新结果如下:
{a:[{id:2}]} {a:[{id:1},{id:30,num:3}, {id:4,num:40}]} {a:[{id:1,num:1}, {id:2,num:2}, {id:30,num:3}, {id:4,num:40}, {id:2}]}