MongoDB 求两个集合差集、交集、并集

描述

求 MongoDB 中两个集合差集、交集、并集

MongoDB 代码

差集示例代码:求 collection_a 与 collection_b 之间的差集 (collection_a - collection_b)
主体代码如下

db.collection_a.aggregate([
{'$lookup':{
    'from':'collection_b',
    'localField':'collection_a_field',
    'foreignField':'collection_b_field',
    'as':'your_custom_field'
    }},
{'$match':{'your_custom_field':{'$ne':[]}}},
],{'allowDiskUse':true})

一般求差集耗费内存会较大,所以设置 allowDiskUse 为 true

交集将上述代码 {'$match':{'your_custom_field':{'$ne':[]}}}
更改为 {'$match':{'your_custom_field':{'$eq':[]}}} 即可


update: 2022-03-06

并集:使用 MongoDB 4.4 后新聚合函数 unionWith
样例如下:

db.collection_a.aggregate([
{ $unionWith: { coll: "collection_b", pipeline: [ <stage1>, ... ] } }
],{'allowDiskUse':true})
Table of Contents