# AggregateCommand.addToSet(value: Expression): Object
聚合操作符。聚合运算符。向数组中添加值,如果数组中已存在该值,不执行任何操作。它只能在 group stage
中使用。
# 参数
# value: Expression
表达式
# 返回值
# Object
# API 说明
addToSet
语法如下:
db.command.aggregate.addToSet(<表达式>)
表达式是形如 $ + 指定字段
的字符串。如果指定字段的值是数组,那么整个数组会被当作一个元素。
# 示例代码
假设集合 passages
的记录如下:
{ "category": "web", "tags": [ "JavaScript", "CSS" ], "title": "title1" }
{ "category": "System", "tags": [ "C++", "C" ], "title": "title2" }
# 非数组字段
每条记录的 category
对应值的类型是非数组,利用 addToSet
统计所有分类:
const $ = db.command.aggregate
db
.collection('passages')
.aggregate()
.group({
_id: null,
categories: $.addToSet('$category')
})
.end()
返回的结果如下:
{ "_id": null, "categories": [ "System", "web" ] }
# 数组字段
每条记录的 tags
对应值的类型是数组,数组不会被自动展开:
const $ = db.command.aggregate
db
.collection('passages')
.aggregate()
.group({
_id: null,
tagsList: $.addToSet('$tags')
})
.end()
返回的结果如下:
{ "_id": null, "tagsList": [ [ "C++", "C" ], [ "JavaScript", "CSS" ] ] }