一、查遍文档也没找到去重的办法,最后发现这两个函数可以曲线救国
假设记录中存在一个数组型字段suppliers,里面存在重复的元素,我们在输出时希望去重,给前台一份干净的数据。
suppliers: ['a', 'a', 'b', 'c']
二、先试试setUnion,函数的作用是输出两个数组的并集,那么加入一个空数组,相当于去重,示例如下:
await db.collection('orders')
.aggregate()
.addFields({
suppliersDistinct: $.setUnion(['$suppliers', []])
}).end()
输出结果为:
suppliersDistinct: ['a', 'b', 'c']
三、再试试setDifference,函数作用是输出仅存在第一个数组中的值,可以用于先排除一个指定值,假如想排除c,示例如下
await db.collection('orders')
.aggregate()
.addFields({
suppliersDistinct: $.setDifference(['$suppliers', ['c']])
}).end()
输出结果为:
suppliersDistinct: ['a', 'b']
可以直接使用group来去重的