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

MongoDB dotaz:$blízko s agregací

Budete muset použít $geoNear a pouze pokud používáte verzi 2.4 a novější

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

Upravit:po úpravě otázky

Níže uvedený dotaz vám poskytne polohu a vzdálenost, ale nenačte interní (prvek pole) _id

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

Všimněte si přidání includeLocs a odstranění uniqueDocs: true

Chcete-li také získat interní _id, budete se muset (podle tohoto příkladu) uvolnit a podmíněně promítnout nebo tak, ale nemyslím si, že by to stálo za to, pokud místo _id nepotřebujete adresu




  1. MongoDB se velmi pomalu maže

  2. mongodb c# vyberte konkrétní pole tečkovou notaci

  3. Spring Data MongoDB - ignorujte prázdné objekty

  4. existuje způsob, jak automaticky generovat ObjectId, když je model mongoose nový?