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})