I have a collection of documents with a location field. I need to find documents within a bounding box, and limit the number of result documents (let's say 25). But I also need these 25 docs were uniformly distributed all over the bounding box (not just any 25 random docs). Is there any way I can achieve this with MongoDB?
How to find 25 uniformly distributed documents in a geo bounding box?
239 views Asked by Leffchik At
1
There are 1 answers
Related Questions in MONGODB
- MongoDb not connecting C#
- How do I link two models in mongoose?
- MERN Stack App - User Avatar Upload - 500 Error After Deployment on Render
- On the server side, it returns undefined but on the client side, logs the values no problem
- Laravel: Using belongsToMany relationship with MongoDB
- What are some MERN projects that will grow me from junior dev to senior
- Save Interface in DB golang
- findOneAndUpdate not updating value in mongodb?
- Get Type Error when using .countDocuments with mongoDB
- Getting a Large Error Output When Calling MongoDB/Mongoose Functions Without an Error Message
- How to enter data in mongodb array at specific position such that if there is only 2 data in array and I want to insert at 5, then rest data is null
- using Python to insert_one to my mongo_db, How do I pass key values into a function?
- SSL Certificate Verification Error When Scraping Website and Inserting Data into MongoDB
- connect ECONNREFUSED 43.205.72.30:27017 while connecting to Atlas
- Vite is probably changing my import path. What should I do?
Related Questions in GEOSPATIAL
- Estimating distance between points and its relative elevation for multiple countries and geometries, using R sf
- Folium Timestampedgeojson - How to add dynamic html for the title of the map
- Convert lat,lon,data points to matrix (2D grid) at 0.5 degree resolution in Python
- Having trouble merging these two datasets for a Spatial Analysis
- How to extract vineyard land cover from CORINE in R?
- find point in inside polygon ..with mysql
- map distance in pixels to meters
- Efficiently Turn Matrix of Intersecting Routes Into Simplified Spatial Network (Graph)
- Oracle SDO_INTERSECTION returning null where an intersection exists in SRID 4326
- Plotting data on shapefile with the same CRS, but things are not lining up as I would expect
- get the band with the maximum value from a xarray stack
- Can spatial features be used as an input for a machine learning model?
- Make SpatRaster from sf point object
- Apache Sedona Version Issues
- MemoryError: Unable to allocate 19.1 GiB for an array with shape (52199, 49069) and data type int64
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
With a bit of math and thinking then you can get the "nearest" items to the centre of the box. It takes a few operations from the initial query with some help from the aggregation framework.
Lets assume a box of origin (0,0) and a max edge of (4,4), which makes the centre (2,2). Then you would issue the following:
So that's the basic principle. Take note to actually consider what co-ordinate system you are using and whether the data is stored in legacy or GeoJSON format as this affects the distance projected as documented.
But essentially
$geoNearfinds the features that fall "close to" the centre of the box you later describe. Most importantly it "projects" a field representing the "distance" from the point queried. Then the$geoWithinmatches those items that actually fall inside the box.All that remains is to
$sortto the nearest entries first, then$limitthe total results to a maximum of 25 from the nearest entry first.