php - 如何在 MongoDB/PHP 中以最佳方式进行分组
问题描述
我对 MongoDB 有一个优化问题。在 Mongo,我在不同时间收集了汽车 GPS 位置的数据。我只想显示每辆车的最新位置。如何优化这段代码?此代码有效,但对于许多汽车来说速度很慢。我从另一个系统的其他 PostgreSQL 数据库接收 id_cars。
代码在这里:
<?php
$resultDB=mysqli_query($link, "SELECT id_cars FROM cars");
while ($row=mysqli_fetch_assoc($resultDB)){
$filter=['carID' => intval($row["id_cars"])];
$options=[
'limit'=>1,
'sort'=>[
'time'=>-1
],
'projection'=>['carID' =>1, 'carID'=>1, 'lat'=>1, 'lon'=>1]
];
$query=new MongoDB\Driver\Query($filter, $options);
if ($cursor =$manager->executeQuery("$dbMongoDbName.ship_data", $query)){
$iterator = new IteratorIterator($cursor);
$iterator->rewind();
if ($iterator->valid()) {
$document = $iterator->current();
$result=json_decode(json_encode($document), true);
echo $result['carID'].": ".$result['lat']." - ".$result['lon'];
}
}
}
?>
解决方案
推荐阅读
- javascript - 在javascript中嵌套对象数组
- reactjs - React Hooks: skip re-render on multiple consecutive setState calls
- python - 从 Python 列表中去除单引号
- java - java代码中的NoSuchField错误但字段存在
- sql - SQL 我不明白我的触发器出了什么问题
- python - 如何使用 PyQT5 中的按钮单击在单独的窗口中打开图像?
- python - 在图像的所有 3 通道中查找具有特定值的像素
- ruby-on-rails - 向模型添加验证
- php - Laravel - 基于单独的表行创建创建动态前缀的数据库表
- flutter - 我正在尝试使用带有颤振的云 Firestore,但我遇到了错误