首页 > 解决方案 > python 中的 MongoDB - 使用 $lookup 和 $out 进行聚合

问题描述

我目前正在尝试学习 MongoDB,但我是在 python 上做的。我有两张数据,我正在处理。样本数据。这不是完整的数据,而只是我正在处理的数据的一部分。实际数据的行数过多。

因此,正如您在数据中看到的那样,我在工作表 1 - 航班和工作表 2 - 航空公司中有一个类似的列,即“OP_UNIQUE_CARRIER”。我想根据这些值进行聚合并在“航班”集合中创建一个新列,并输出一个名为“newairinfo”的新集合。这些集合(航班和航空公司)都在名为“air”的数据库下。

这是我的代码:

import pymongo
from pymongo import MongoClient
import pprint

client = MongoClient("localhost", 27017);
db = client.air
outputOrder = [("DAY_OF_WEEK", pymongo.DESCENDING), ("ARR_DELAY", pymongo.ASCENDING), ("TAIL_NUM", pymongo.DESCENDING), ("AIR_TIME", pymongo.ASCENDING)]

airlinescollection = db.airlines
flightcollection = db.flights
flightcollection.aggregate([
    {
        '$lookup': {
            'from': 'airlines', 
            'localField': 'OP_UNIQUE_CARRIER', 
            'foreignField': 'OP_UNIQUE_CARRIER', 
            'as': 'airline'
        }
    }, {
        '$out': 'newairinfo'
    }
])

results=flightcollection.find().sort(outputOrder).limit(10)
for result in results:
    print(result)

我已经尝试过这段代码,但它总是在最后抛出空结果。我已经根据聚合 $lookup,$out 的 MongoDB 文档尝试了此代码,但它仍然是相同的。

请告诉我我能做些什么来纠正它。

标签: python-3.xmongodbaggregate

解决方案


$outstage 不会产生结果,它会将匹配的文档插入到指定的集合中。

如果要从管道中检索文档,请删除$out阶段。


推荐阅读