无法通过聚合在mongodb中合并来自多个集合的数据吗? (Pymongo)

问题描述 投票:0回答:1

我正在使用pymongo更新mongodb中的某些数据。我正在尝试使用聚合和查找将来自两个集合的数据合并为一个。基本上,我正在尝试执行以下操作:https://stackoverflow.com/a/35948843

这是我的代码:

client = pymongo.MongoClient('localhost', 27017) #Connecting to mongo
db = client['<Database name>'] 
collection = db["<Collection name 1>"]

collection.aggregate([{
    "$lookup": {
            "from": "<Collection name 2>",
            "localField": "Symbol",
            "foreignField": "Symbol",
            "as": "Extra Info"
        }
}])

虽然我没有收到任何错误,但是我的收藏集尚未更新,并且聚合无法正常工作

我试图输出聚合结果以检查是否存在任何错误:

results = collection.aggregate([{
    "$lookup": {
            "from": "<Collection name 2>",
            "localField": "Symbol",
            "foreignField": "Symbol",
            "as": "Extra Info"
        }
}])
print (list(results))

“结果”的输出正是我想要的,这意味着聚合已起作用。

所以我试图了解自己在做错还是愚蠢?如果有人可以提供帮助,那将真的很有帮助。

python mongodb aggregate pymongo
1个回答
0
投票

我犯了一个小错误。如其中一条注释所述,$ lookup仅返回一个游标,而实际上不更新该集合。要更新或创建新集合,$ out是一个不错的选择。这是代码:

client = pymongo.MongoClient('localhost', 27017) #Connecting to mongo
db = client['<Database name>'] 
collection = db["<Collection name 1>"]

collection.aggregate([{
    "$lookup": {
            "from": "<Collection name 2>",
            "localField": "Symbol",
            "foreignField": "Symbol",
            "as": "Extra Info"
        }
{"$unwind": "$Extra_info"},
{"$out" : "<Collection name 3>" }}])

注意:$ unwind用于解构文档内部的数组。此处的文档:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/

© www.soinside.com 2019 - 2024. All rights reserved.