📜  如何在 mongodb 中传播数组 (1)

📅  最后修改于: 2023-12-03 15:24:17.367000             🧑  作者: Mango

如何在 MongoDB 中传播数组

在 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 则只会添加不重复的元素。根据实际情况选择合适的方法即可。