- $push_all
- 语法
- 描述
- 示例
$push_all
语法
- { $push_all: {<字段名1>:[<值1>,<值2>,...,<值N>], <字段名2>: [<值1>,<值2>,...,<值N>], ... } }
描述
$push_all向指定数组对象(如<字段名1>)推入每一个指定值([<值1>,<值2>,…,<值N>])。操作对象必须为数组类型的字段。如果记录中不存在指定的数组对象,向记录推入指定的数组对象和每一个指定的值([<值1>,<值2>,…,<值N>]);如果指定的值存在数组对象中,同样被推入到数组对象中。
示例
- 向集合bar下的arr数组对象推入[1,2,8,9]数组。如有记录:
- { arr: [1,2,4,5], age: 10, name: ["Tom","Mike"] }
- > db.foo.bar.update({ $push_all: { arr: [1,2,8,9] } })
此操作后,记录更新为:
- { arr: [1,2,4,5,1,2,8,9], age: 10, name: ["Mike"] }
虽然原来记录arr对象有元素1和2,使用$push_all操作符,会将[1,2,8,9]全部值推入到数组对象arr中。
- 向集合bar中推入数组对象name,假设原记录不存在数组对象name。如有记录:
- { arr: [1,3,4,5], age: 10 }
- > db.foo.bar.update({ $push_all: { name: ["Tom","Jhon"] } }, { name: { $exists: 0 } })
此操作后,记录更新为:
- { arr: [1,3,4,5], age: 10, name: ["Tom","Mike"] }