【发布时间】:2019-09-16 09:04:44
【问题描述】:
我有一个文档看起来像这样的集合
{'_id': ObjectId('5d7f4aa4d2394d86aacbfbe0'),
'aeroplanes': [{'_id': ObjectId('5d7f4aa4d2394d86aacbfbd8'),
'capacity': 1442,
'flights': [{'_id': ObjectId('5d7f4aa4d2394d86aacbfbd7'),
'arrival_time': datetime.datetime(2010, 10, 8, 3, 26, 50),
'departure_time': datetime.datetime(1988, 6, 29, 14, 10, 52),
'gate_number': 6,
'seats': [{'_id': ObjectId('5d7f4aa4d2394d86aacbfbd6'),
'price': 1779,
'ticket': None,
'type': 'A'}]}],
我想选择所有无(空)类型的座位。我想要的输出是这样的:
'seats': [
{'_id': ObjectId('5d7f4aa4d2394d86aacbfbd6'),
'price': 1779,
'ticket': None,
'type': 'A'},
{'_id': ObjectId('5d7f4aa4d2394566acfgbgt'),
'price': 3546,
'ticket': None,
'type': 'A'}
]
我尝试关注this answer 并写道:
airline_col.aggregate([
{"$match": {'aeroplanes.flights.seats.ticket': None}},
{"$project": {
"seats" : { "$filter" : {
"input": '$aeroplanes.flights.seats',
"as": 'seat',
"cond": {"$eq": ['$$seat.ticket', None]}
}}
}}
])
但它只是返回空数组。正确的查询是什么?
Mongo Playground 查询链接:https://mongoplayground.net/p/Wl2l4IdJLT2
【问题讨论】:
-
如果您将收集的示例数据和您在查询中所做的工作放在此处mongoplayground.net 用于 mongo-query,这对其他人的回答将非常有帮助。
-
添加了链接。
-
您只需要查询后响应的座位数据,而不是飞机、航班等字段?
-
其实这两种查询类型我都需要。在一种类型中,只需要座位信息,在另一种类型中,我也需要所有家长信息。
标签: mongodb mongodb-query aggregation-framework pymongo