$pull_all

    区别在于:

    $pull 只能匹配某个字段的一个值,$pull_all 能匹配某个字段的多个值。

    相当于执行多次 $pull

    1. { $pull: { <字段名1>: <值2> } }
    2. { $pull: { <字段名1>: <值N> } }
    • 操作 arr 字段,删除数组中为 2 或者 为 3 的元素;操作 name 字段,删除数组中为 “Tom” 的元素。如有记录:

      1. 操作 arr 字段,删除数组中为 4 或者 为 5 的元素。如有记录:

        1. > db.sample.employee.update( { $pull_all: { arr: [ 4, 5 ] } } )

        此操作后,记录更新为:

        1. { arr: [ 1, 3 ], age: 10, name: [ "Tom", "Mike" ] }