sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB-forespørgsel:$nær med aggregering

Du skal bruge $geoNear , og kun hvis du bruger V2.4 og frem

db.users.aggregate(   
    {$geoNear : {
        near: [-1, -2],
        distanceField: "distance",
        query : {"_id" : "id1"},
        uniqueDocs: true,
        maxDistance : 2000
}})

Rediger:efter redigering af spørgsmål

Forespørgslen nedenfor giver dig placering og afstand, men henter ikke det interne (array-element) _id

db.users.aggregate(   
  {$geoNear : {
    near: [-1, -2],
    distanceField: "distance",
    includeLocs: "location",
    query : {"_id" : "id1"},
    maxDistance : 2000
  }},
  {$project : {"location" : 1, "_id" : 0, "distance" : 1}} 
)

Bemærk tilføjelsen af ​​includeLocs og eliminering af uniqueDocs: true

For også at hente det interne _id, skal du (ved at følge dette eksempel) slappe af og betinget projektere eller deromkring, men jeg synes ikke det er det værd, medmindre du har brug for adressen i stedet for _id'et




  1. replika Sæt mongo docker-compose

  2. Hvornår skal jeg bruge en NoSQL-database i stedet for en relationsdatabase? Er det okay at bruge begge på samme side?

  3. Hvad er alle mongoose-begivenhederne, og hvor er de dokumenteret?

  4. Hvordan laver man en forespørgsel i denne indlejrede dokumentstruktur (MongoDB)?