From e1fc4b1db2f53fbae64088b34134a756239d5d70 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Sun, 30 Jun 2024 20:46:37 +0100 Subject: [PATCH] Add pipeline for finding station by distance Signed-off-by: Fred Boniface --- src/utils/ldbPipeline.utils.ts | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/utils/ldbPipeline.utils.ts diff --git a/src/utils/ldbPipeline.utils.ts b/src/utils/ldbPipeline.utils.ts new file mode 100644 index 0000000..7a26a4f --- /dev/null +++ b/src/utils/ldbPipeline.utils.ts @@ -0,0 +1,42 @@ +export function findStationsByDistancePipeline(count: number) { + return [ + { + '$geoNear': { + 'near': { + 'type': 'Point', + 'coordinates': [ + -5.149929, 58.350661 + ] + }, + 'distanceField': 'distance' + } + }, { + '$limit': count + }, { + '$addFields': { + 'miles': { + '$divide': [ + { + '$round': { + '$multiply': [ + { + '$divide': [ + '$distance', 1609.34 + ] + }, 4 + ] + } + }, 4 + ] + } + } + }, { + '$project': { + '_id': 0, + '3ALPHA': 1, + 'NLCDESC': 1, + 'miles': 1 + } + } + ] +} \ No newline at end of file