MongoDB にデータのリアルタイム物流追跡機能を実装する方法
物流追跡は、サプライ チェーン管理における重要なリンクです。商品の位置と状態を追跡することによって、リアルタイムで物の流れを正確に把握し、物流効率を向上させることができます。実際の物流管理では、MongoDB は効率的な非リレーショナル データベースとして、リアルタイムの物流追跡を適切にサポートします。この記事では、MongoDB にデータのリアルタイム物流追跡機能を実装する方法と具体的なコード例を紹介します。
MongoDB では、物流情報を保存するコレクションを設計できます。各物流情報には、貨物 ID、出発地、目的地、到着予定時刻、実際の到着時刻などの属性を含めることができます。同時に、各物流情報に、物流情報を識別するための固有のトラッキングコード(Tracking Code)を付加することができる。このようにして、追跡コードを通じて物流情報を照会および追跡できます。
以下は物流情報ドキュメント構造の例です:
{
"_id": ObjectId("5f8d07ea0c78f7a8e4070b68"),
"trackingCode": "ABC123",
"cargoId": "C01",
"origin": "Shanghai",
"destination": "Beijing",
"estimatedArrivalTime": ISODate("2020-10-20T10:00:00Z "),
"actualArrivalTime": ISODate("2020-10-19T11:30:00Z"),
"status": "配達済み"
}
リアルタイム物流追跡機能を実現するには、MongoDB 上の物流情報をリアルタイムに更新する必要があります。一般的な実装は、MongoDB の Change Streams 機能を使用することです。 Change Streams を通じて、コレクション内の変更を監視し、更新されたデータをリアルタイムで取得できます。
以下は Change Streams コードの例です:
const { MongoClient } = require('mongodb');
async function trackLogistics() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);
試行 {
await client.connect(); const pipeline = [ { $match: { 'fullDocument.status': 'Delivered' } } ]; const changeStream = client.db('logistics').collection('shipments') .watch(pipeline); changeStream.on('change', (change) => { const trackingCode = change.fullDocument.trackingCode; const status = change.fullDocument.status; console.log(`物流追踪码:${trackingCode},状态:${status}`); }); await new Promise((resolve) => setTimeout(resolve, Infinity));
} 最後に {
await client.close();
}
}
trackLogistics().catch(console.error);
上記のコードは、物流情報の変化を監視し、ステータスが「配達済み」の物流情報を除外します。新しい物流情報ステータスが「配達済み」に更新されるたびに、追跡コードとステータスが印刷されます。これにより、物流情報の変化をリアルタイムに把握することができます。
リアルタイム追跡機能に加えて、追跡コードに基づいて特定の物流情報をクエリすることもできます。以下はクエリ コードの例です:
const { MongoClient } = require('mongodb');
async function queryLogistics(trackingCode) {
const uri = "mongodb:// localhost:27017";
const client = new MongoClient(uri);
最終的に {
await client.connect(); const logistics = client.db('logistics').collection('shipments'); const result = await logistics.findOne({ trackingCode }); console.log(result);
} を試してください {
await client.close();
}
}
queryLogistics('ABC123').catch(console.error);
queryLogistics 関数を呼び出してトラッキング コードを渡すことにより、トラッキング コードに対応する物流情報をクエリできます。
上記のコード例を通じて、MongoDB にデータのリアルタイムの物流追跡機能を実装できます。適切なデータモデル、リアルタイムのデータ更新、物流情報の照会操作を設計することで、さまざまな物流シーンに柔軟に対応し、物流管理の効率化と精度の向上を実現します。
以上がMongoDBにデータのリアルタイム物流追跡機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。