MongoDB聚合运算符:$setDifference
$setDifference
聚合运算符比较两个数组,返回之前第一个数组中存在的元素,相当于返回第二个数组对于第一个数组的补集。
语法
{
$setDifference: [ <expression1>, <expression2> ] }
参数可以是任何能够解析为数组的表达式。
使用
$setDifference
对数组执行集合操作,将数组视为集合。如果数组包含重复元素,$setDifference
会忽略重复元素。$setDifference
忽略元素的顺序。$setDifference
会过滤掉结果中的重复元素,输出仅包含唯一元素的数组,输出数组中元素的顺序未指定。- 如果集合包含嵌套数组元素,则
$setDifference
不会下降到嵌套数组,而只处理顶层数组元素。
举例 | 结果 |
---|---|
{ $setDifference: [ [ "a", "b", "a" ], [ "b", "a" ] ] } |
[ ] |
{ $setDifference: [ [ "a", "b" ], [ [ "a", "b" ] ] ] } |
[ "a", "b" ] |
举例
使用下面的脚本创建flowers
集合:
db.flowers.insertMany( [
{
"_id" : 1, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "rose", "orchid" ] },
{
"_id" : 2, "flowerFieldA" : [ "rose", "orchid" ], "flowerFieldB" : [ "orchid", "rose", "orchid" ] },
{
"_id" : 3, "flowerFieldA" : [ "rose", "orchid" ]