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

Mongodb najít porovnání prvků pole

Protože pokaždé máte přesný formát pole (kruh je pole se dvěma prvky), můžete jej v agregačním rámci transformovat na dvě pole a poté je porovnat v projekci a porovnat, abyste získali zpět pouze prvky splňující váš požadavek na druhý prvek pole je větší než první prvek pole.

db.place.aggregate( [
      { $unwind : "$center" },
      { $group : { _id : "$_id", 
                   centerX : {$first:"$center"}, 
                   centerY : {$last:"$center"} 
      } },
      { $project : { YgtX : { $gt : [ "$centerY", "$centerX" ] } } },
      { $match : { YgtX : true } }
] );

Nyní, pokud vaše pole bylo libovolnou dvojicí číselných hodnot, můžete použít výše uvedené.

V komentářích jste uvedl, že váš pár představuje souřadnice (šířka, délka) – mějte na paměti, že v MongoDB jsou páry souřadnic vždy uloženo tak dlouho, lat – pokud byly vaše skutečné hodnoty x, y souřadnicemi na plochém (na rozdíl od sférického) místě, můžete najít všechny dokumenty, které měly souřadnici Y větší než souřadnici X, pomocí jediného geoprostorového dotazu:

db.place.find( { center : { $geoWithin : { $geometry : {
                  type:"Polygon", 
                  coordinates:[[[50,50],[-50,50],[-50,-50],[50,50]]]
} } } } );

Výše uvedený dotaz předpokládá, že váš souřadnicový systém jde od -50 do 50 podél X a Y a najde všechny body v trojúhelníku, který představuje všechny souřadnice mající Y>=X.



  1. Jak modelovat systém hlasování Líbí se pomocí MongoDB

  2. Jak získat zpětné volání na MongoDB collection.find()

  3. $match ve výsledku $lookup

  4. Jak serializovat ObjectId do JSON?