使用MongoDB查询无法按升序获取各个州的数据以及与之相关的城市

时间:2019-12-03 07:38:02

标签: mongodb

无法使用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)

0 个答案:

没有答案