首页 > 解决方案 > 合并两个 Mongodb 集合并选择唯一值(pymongo)

问题描述

我有一个问题集合,以及两个集合中的销售集合我有一个名为 item_id 的字段

我需要在每个集合上生成一个包含唯一项目 ID 的列表

例子 :

订单收集:

{
"orderid": 1
"itemid": item1
},
{
"orderid": 2
"itemid": item2
},
{
"orderid": 3
"itemid": item4
}

问题集合:

{
"questionid":1
"itemid":item1
},
{
"questionid":2
"itemid":item2
},
{
"questionid":3
"itemid":item3
}

我正在寻找的结果是这样的

项目集合:

{
"itemid":item1,
"itemid":item2,
"itemid":item3,
"itemid":item4,
}

标签: pythonmongodbpymongo

解决方案


通过使用从集合中获取不同的项目:col.distict('itemid')

然后在集合数据结构中聚合项目。

all_items = set()
orders = db.orders.distinct('itemid')
questions = db.questions.distinct('itemid')
for item in orders:
    all_items.add(item)
for item in questions:
    all_items.add(item)

最后 all_items 是一个包含两个集合中不同项目的集合,您可以根据需要将其转换为任何其他数据结构。

#inserting to item collection
col = db.items
for item in all_items:
    col.insert_one({'item' : item})

将项目添加到集合中,保证元素的唯一性。


推荐阅读