我目前正在运行MongoDB实例,以实时将收集的推文保存在地理位置框中。有了这个,我想生成一个热图,以显示在阿姆斯特丹发送的大部分推文的位置。要做到这一点,我只需要查询地理线。这适用于以下代码行:
db.testtweets.find({"geo": { "$ne": null } }, { "geo": 1 });
不幸的是,这会返回Google Maps API所需的更多信息。输出:
{ "_id" : ObjectId("56fea2cf206e3712f3d1a9bb"), "geo" : { "type" : "Point", "coordinates" : [ 52.3746373, 4.85773855 ] } }
我想要的输出:
52.3746373, 4.85773855
我对MongoDB很新,所以非常感谢任何建议。
答案 0 :(得分:1)
使用find()
最接近的是:
db.testtweets.find(
{ "geo": { "$ne": null } },
{ "geo.coordinates": 1, "_id": 0 }
)
产生:
{ "geo" : { "coordinates" : [ 52.3746373, 4.85773855 ] } }
从那里你使用客户端处理来返回"坐标"数组字段值。
您也可以使用aggregate()
方法执行此操作。您需要的只是$project
您的文件。
db.testtweets.aggregate([
{ "$match": { "geo": { "$ne": null } } },
{ "$project": {
"coordinates": "$geo.coordinates",
"_id": 0
}}
]);
产生类似的东西:
{ "coordinates" : [ 52.3746373, 4.85773855 ] }
PHP中的翻译给出:
db.testtweets.aggregate(array(
array("$match" => array("geo" => array( "$ne" => null)),
array("$project" => array(
"coordinates" => "$geo.coordinates",
"_id" => 0
))
));