无法使用mongodb查询按升序获取各个州的数据以及与之相关的城市。我是Mongodb的新手,需要指导。 目前,我正在收到以国家/地区为主要键的响应,每个国家/地区都在拥有州/省列表,每个州都在拥有市列表,每个城市都拥有协调区和邮政编码列表。
以下是所用查询的代码段:
condition = [
{"$match": {
"$and":[
{"data.timestamp_ms": { "$exists": True
}},
{"data.timestamp_ms": { "$ne": None }},
{"data.timestamp_ms": { "$ne": 'null'}},
{"data.timestamp_ms": { "$gte": str(start_date) }},
{"data.timestamp_ms": { "$lte": str(end_date) }},
{"country": { "$exists": True }},
{"country": { "$ne": None }},
{"country": { "$ne": 'null' }},
{"country": { "$ne": '' }},
{"state": { "$exists": True }},
{"state": { "$ne": None }},
{"state": { "$ne": 'null' }},
{"state": { "$ne": '' }},
{"city": { "$exists": True }},
{"city": { "$ne": None }},
{"city": { "$ne": 'null' }},
{"city": { "$ne": '' }},
{"zipcode": { "$exists": True }},
{"zipcode": { "$ne": None }},
{"zipcode": { "$ne": 'null' }},
{"zipcode": { "$ne": '' }},
{"latitude": { "$exists": True }},
{"latitude": { "$ne": None }},
{"latitude": { "$ne": 'null' }},
{"longitude": { "$exists": True }},
{"longitude": { "$ne": None }},
{"longitude": { "$ne": 'null' }},
]
}
},
{ "$group": {
"_id": {
"country": "$country",
"state": "$state",
"city":"$city",
},
"coords": {
"$addToSet": {
"latitude": "$latitude",
"longitude": "$longitude",
}
},
"zipcode": {
"$addToSet": {
"zipcode": "$zipcode",
}
}
}},
{ "$group": {
"_id": {
"country": "$_id.country",
"state": "$_id.state"
},
"cities": {
"$addToSet": {
"city": "$_id.city",
"coords": "$coords",
"zipcode": "$zipcode",
}
}
}},
{ "$group": {
"_id": "$_id.country",
"country": { "$first": "$_id.country" },
"states": {
"$addToSet": {
"state": "$_id.state",
"cities": "$cities"
}
}
}},
{
"$sort" : { "country": 1 }
}
]
Obj = table.aggregate(condition)