📅  最后修改于: 2023-12-03 15:24:17.367000             🧑  作者: Mango
在 MongoDB 中,可以使用 $push
和 $addToSet
操作符来传播一个数组,这两个操作符的作用略有不同。
$push
$push
操作符会向数组中添加一个或多个元素。
db.collection.update(
{ _id: ObjectId("...") },
{ $push: { <field>: <value> } }
)
其中,<field>
是要传播的数组字段名,<value>
表示要传播的元素数据。如果传播的是一个数组,那么使用 [<value1>, <value2>, ...]
的形式。
可以使用 $each
选项向数组中添加多个元素。
db.collection.update(
{ _id: ObjectId("...") },
{ $push: { <field>: { $each: [<value1>, <value2>, ...] } } }
)
使用 $slice
选项,可以限制数组中元素的数量。
db.collection.update(
{ _id: ObjectId("...") },
{ $push: { <field>: { $each: [<value1>, <value2>, ...], $slice: N } } }
)
其中,N
是限制的元素数量。如果数组中元素数量大于 N
,则会保留前 N
个元素。如果 N
是负数,那么会保留后面的元素,而删除前面的元素。
使用 $sort
选项,可以对数组进行排序。
db.collection.update(
{ _id: ObjectId("...") },
{ $push: { <field>: { $each: [<value1>, <value2>, ...], $sort: { <field>: 1 } } } }
)
其中,<field>
是用于排序的字段名,1
表示升序,-1
表示降序。
$addToSet
$addToSet
操作符会向数组中添加一个元素,但是只有在数组中不存在该元素时才进行添加操作。
db.collection.update(
{ _id: ObjectId("...") },
{ $addToSet: { <field>: <value> } }
)
其中,<field>
是要传播的数组字段名,<value>
是要传播的元素数据。
使用 $each
选项可以向数组中添加多个元素,同样也会进行去重操作。
db.collection.update(
{ _id: ObjectId("...") },
{ $addToSet: { <field>: { $each: [<value1>, <value2>, ...] } } }
)
以上就是在 MongoDB 中传播数组的方法。使用 $push
和 $addToSet
操作符都能够实现数组的传播,但是 $push
可以往数组中添加重复元素,而 $addToSet
则只会添加不重复的元素。根据实际情况选择合适的方法即可。