MongoDB $addToSet 运算符介绍

Mongodb $addToSet 运算符用于向 Mongodb 文档中的数组字段添加元素,但只有当该元素不存在于数组中时才会被添加。它是 Mongodb 查询语言中的一种操作符,可以与其他操作符组合使用来构建更复杂的查询语句。

语法

$addToSet 运算符的语法如下:

{ $addToSet: { <field>: <value> } }

其中,<field> 是要添加元素的数组字段,<value> 是要添加的元素值。

使用场景

$addToSet 运算符通常用于向文档中的数组字段添加元素,但只添加不存在于数组中的元素。例如:

  1. 向一个用户文档中的收藏夹数组字段添加新的收藏项。
  2. 向一个文章文档中的标签数组字段添加新的标签。

示例

假设我们有一个名为 users 的集合,其中存储了用户的姓名和收藏夹信息。收藏夹信息是一个数组,存储了用户收藏的商品名称。我们想添加一些新的收藏品,但只添加不存在于收藏夹中的商品,可以使用 $addToSet 运算符来实现:

db.users.update(
  { name: "Alice" },
  { $addToSet: { favorites: { $each: ["Item A", "Item C", "Item D"] } } }
)

上述查询语句会向名为 Alice 的用户的收藏夹中添加三个新的商品:Item A、Item C 和 Item D。如果收藏夹中已经存在 Item A,则不会重复添加。我们使用 $each 运算符来一次添加多个元素,而不是多次调用 $addToSet 运算符。

假设集合中存在以下文档:

{ "name": "Alice", "favorites": ["Item A", "Item B", "Item E"] }

执行以上查询语句后,该文档会变成如下所示:

{ "name": "Alice", "favorites": ["Item A", "Item B", "Item E", "Item C", "Item D"] }

结论

$addToSet 运算符是 Mongodb 查询语言中一个常用的操作符,可用于向数组字段中添加元素,但只添加不存在于数组中的元素。它可以与其他操作符组合使用,构建更为复杂的查询语句。