python-3.x - 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 文档尝试了此代码,但它仍然是相同的。
请告诉我我能做些什么来纠正它。
解决方案
$out
stage 不会产生结果,它会将匹配的文档插入到指定的集合中。
如果要从管道中检索文档,请删除$out
阶段。
推荐阅读
- mysql - 带有 MySQL Docker 容器的 Spring Boot JPA - 拒绝用户访问
- java - 错误:(42, 70) java: -source 1.6 不支持文字中的下划线(使用 -source 7 或更高版本来启用文字中的下划线)
- c - 排序后数组大小改变
- python - 使用此 for 循环计算体重指数时,为什么我会得到不受支持的操作数类型?
- r - 使用 position_dodge 在条形图上叠加点(和误差线)
- javascript - 计算车轮数据 XY 位置
- python-3.x - Python-Selenium:剪贴板功能(ctrl + c)在 Firefox 无头模式下不起作用
- powershell - 当密码以空格开头时,连接到 Office 365 powershell 失败
- windows - 如何让 Windows 的 Smart Screen 信任我的安装程序?
- python - 使用我想转换为字符串的未初始化变量调用函数