sql >> Databáze >  >> NoSQL >> MongoDB

$geoNear (agregátní potrubí) nevrací správné dokumenty

Není to vůbec "stejný" dotaz. Existuje výrazný rozdíl v použití samostatného $match fázi, protože „filtrování“ se provádí až „po“ nalezení „nejbližších výsledků“. To znamená, že potenciálně vrátíte „méně“ výsledků, protože kritéria nejsou vydávána v kombinaci.

Proto existuje "dotaz" možnost v $geoNear :

db.place.aggregate(
[
    { 
        $geoNear: { 
            spherical: true,
            near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
            distanceField: "dist",
            query: {
                "schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" } 
            }
        }
    }
])

Nyní je to stejný dotaz. Nebo by to bylo úplně stejné, kdybyste použili $nearSphere . Protože $near nebere v úvahu zakřivení Země ve výpočtech vzdálenosti. $nearSphere a $geoNear ano.

Ale hlavním bodem je kombinace s "dotaz" možnost, protože to je jediný způsob, jak při počátečním vyhledávání skutečně zohlednit obě kritéria.




  1. Meteor publish odběr není reaktivní

  2. MongoDB $lookup Objectid získat prázdné pole?

  3. MongoDB InvalidDocument:Nelze kódovat objekt

  4. MongoDb přes jndi