sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB-fråga:$nära med aggregering

Du måste använda $geoNear , och endast om du använder V2.4 och framåt

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

Redigera:efter redigering till fråga

Frågan nedan ger dig plats och avstånd, men hämtar inte det interna (arrayelementet) _id

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

Observera tillägget av includeLocs och eliminering av uniqueDocs: true

För att även hämta det interna _id måste du (enligt detta exempel) koppla av och villkorligt projicera eller så, men jag tycker inte att det är värt det, om du inte behöver adressen istället för _id




  1. Anslutning till icke existerande mongodb-server ger inget undantag

  2. Rails + MongoMapper + EmbeddedDocument blanketthjälp

  3. Hur man skriver fackliga frågor i mongoDB

  4. Hur man skapar index i MongoDB via .NET