📜  MongoDB update操作符

📅  最后修改于: 2020-11-23 00:55:11             🧑  作者: Mango

MongoDB update操作符

以下修饰符可用于更新操作。例如-在db.collection.update()和db.collection.findAndModify()中。

在以下格式的文档中定义运算符表达式:

{
   : { : , ... },
   : { : , ... },
}

现场操作员

$ currentDate

它将字段的元素更新为当前日期(日期或时间戳)。该运算符的默认数据类型是日期。

句法:

{ $currentDate: { : , ... } }

例:

            db.books.insertOne(
   { _id: 1, status: "a", lastModified: purchaseDate("2013-10-02T01:11:18.965Z") }
)

$ inc

它将字段增加指定的值。

句法:

{ $inc: { : , : , ... } }

例:

              {
  _id: 000438,
  sku: "MongoDB",
  quantity: 1,
  metrics: {
    orders: 2,
    ratings: 3.5
  }
}

$ min

如果指定的值小于字段的当前值,则它将字段的值更改为指定的值。

句法:

{ $min: { : , ... } }

例:

{ _id: 0021, highprice: 800, lowprice: 200 }
db.books.update( { _id: 0021 }, { $min: { highprice: 500 } } )

最高$

如果指定的值大于字段的当前值,它将字段的值更改为指定的值。

句法:

{ $max: { : , ... } }

例:

{ _id: 0021, highprice: 800, lowprice: 200 }
db.books.update( { _id: 0021 }, { $max: { highprice: 950 } } )

$ mul

它将字段的值乘以数字。

句法:

{ $mul: { : , ... } }

例:

db.books.update(
   { _id: 1 },
   { $mul: { price: NumberDecimal("180.25"), qty: 2 } }
)

$重命名

重命名运算符更改字段的名称。

句法:

{$rename: { : , : , ... } }

例:

db.books.updateMany( {}, { $rename: { "nmae": "name" } } )

$ set

集合运算符使用指定的值更改字段的值。

句法:

{ $set: { : , ... } }

例:

                {
  _id: 100,
  sku: "abc123",
  quantity: 50,
  instock: true,
  reorder: false,
  details: { model: "14Q2", make: "xyz" },
  tags: [ "technical", "non technical" ],
  ratings: [ { by: "ijk", rating: 4 } ]
}

$ setOnInsert

如果upsert设置为true,则将导致插入文档,然后setOnInsert运算符将指定的值分配给文档中的字段。

句法:

 db.collection.update(
   ,
   { $setOnInsert: { : , ... } },
   { upsert: true }
)

$未设定

它删除指定的字段。

句法:

{ $unset: { : "", ... } }

例:

               db.products.update(
   { sku: "unknown" },
   { $unset: { quantity: "", instock: "" } }
)

数组运算符

$

我们可以在不显式指定元素位置的情况下更新数组中的元素。

句法:

{ ".$" : value }

例:

                db.collection.update(
   { : value ... },
   { : { ".$" : value } }
) 

$ []

位置运算符指示更新运算符应更改给定数组字段中的所有元素。

句法:

{ : { ".$[]" : value } }

例:

               db.collection.updateMany(
   {  },
   { : { ".$[]" : value } }
)

$ [ ]

它称为标识数组元素的过滤后的位置运算符符。

句法:

{ : { ".$[]" : value } },
{ arrayFilters: [ { :  } ] }

例:

                db.collection.updateMany( {  },
   { : { ".$[]" : value } },
   { arrayFilters: [ { :  } ] } )

$ addToSet

除非该元素已经存在,否则它将元素添加到数组中,在这种情况下,此运算符对该数组不执行任何操作。

句法:

{ $addToSet: { : , ... } }

例:

               db.books.update(
   { _id: 1 },
   { $addToSet: { tags: "MongoDB" } }
)

流行音乐

我们可以使用pop运算符删除数组的第一个或最后一个元素。我们需要将pop的值传递为-1来删除数组的第一个元素,并传递1来删除数组的最后一个元素。

句法:

{ $pop: { : <-1 | 1>, ... } }

例:

db.books.update( { _id: 1 }, { $pop: { mongoDB: -1 } } )

$拉

使用pull运算符,我们可以删除匹配指定条件的数组中值的所有实例。

句法:

{ $pull: { : , : , ... } }

例:

                db.books.update( { }, { $pull: { Development: { $in:["Java", "RDBMS" ] }, Tech: "Cybersecurity" } },
    { multi: true }
)

$推

它将指定的值附加到数组。

句法:

{ $push: { : , ... } }

例:

db.students.update( { _id: 9 }, { $push: { scores: 91 } } )

$ pullAll

我们可以使用pullAll运算符从现有数组中删除所有指定值的实例。它删除与列出的值匹配的元素。

句法:

{ $pullAll: { : [ ,  ... ], ... } }

例:

db.survey.update( { _id: 1 }, { $pullAll: { scores: [ 0, 5 ] } } )

修饰符

$每个

它与$ addToSet运算符和$ push运算符。如果该值不存在于字段中,则它与addToSet运算符一起使用以将多个值添加到数组。

句法:

{ $addToSet: { : { $each: [ ,  ... ] } } }

它与push运算符一起使用,可将多个值附加到数组。

句法:

{ $push: { : { $each: [ ,  ... ] } } }

例:

db.students.update( { name: "Akki" }, { $push: { scores: { $each: [ 90, 92, 85 ] } } } )

$位置

它指定push运算符在数组内插入元素的位置。

句法:

            {
  $push: {
    : {
       $each: [ , , ... ],
       $position: 
    }
  }
}

例:

               db.students.update(
   { _id: 1 },
   {
     $push: {
        scores: {
           $each: [ 50, 60, 70 ],
           $position: 0
        }
     }
   }
)

$切片

该修饰符用于限制推入操作期间数组元素的数量。

句法:

             {
  $push: {
     : {
       $each: [ , , ... ],
       $slice: 
     }
  }
}

例:

               db.students.update(
   { _id: 1 },
   {
     $push: {
       scores: {
         $each: [ 80, 78, 86 ],
         $slice: -5
       }
     }
   }
)

$ sort

sort修饰符在推入操作期间排列数组的值。

句法:

            {
  $push: {
     : {
       $each: [ , , ... ],
       $sort: 
     }
  }
}

例:

                db.students.update(
   { _id: 1 },
   {
     $push: {
       quizzes: {
         $each: [ { id: 3, score: 8 }, { id: 4, score: 7 }, { id: 5, score: 6 } ],
         $sort: { score: 1 }
       }
     }
   }
)

按位运算符

$位

位运算符使用按位运算符更新字段。它支持按位与,按位或以及按位XOR操作。

句法:

{ $bit: { : { :  } } }

例:

db.books.update( { _id: 1 }, { $bit: { expdata: { and: price(100) } } }
)