MongoDB y consultas geoespaciales: especificador geográfico desconocido: $geometry: null
Estoy experimentando con MongoDB y consultas geoespaciales. He creado la siguiente colección:
shape> db.shape.find()
[
{
_id: ObjectId("61ab50d2056b5357b5e23e56"),
name: 'Point1',
structure: { type: 'Point', coordinates: [ 2.5, 2.5 ] }
},
{
_id: ObjectId("61ab5337056b5357b5e23e57"),
name: 'Point2',
structure: { type: 'Point', coordinates: [ 5, 5 ] }
},
{
_id: ObjectId("61ab533e056b5357b5e23e58"),
name: 'Point3',
structure: { type: 'Point', coordinates: [ 9, 9 ] }
},
{
_id: ObjectId("61ab5b4d056b5357b5e23e64"),
name: 'square',
structure: {
type: 'Polygon',
coordinates: [ [ [ 0, 0 ], [ 0, 5 ], [ 5, 5 ], [ 5, 0 ], [ 0, 0 ] ] ]
}
}
]
Luego intenté lo siguiente:
var square = db.shape.find({name: "square"});
db.shape.find({structure: { $geoWithin: { $geometry: square.structure}}});
Y obtengo este error:
MongoServerError: unknown geo specifier: $geometry: null
¿Por qué $geometry es nulo?
Gracias de antemano.
davy.ai
El mensaje de error “unknown geo specifier: $geometry: null” significa que el especificador
$geometry
no es reconocido por MongoDB como un operador geoespacial válido. En este caso, es probable que se deba al uso del operador$geometry
con una variable (square.structure
) que contiene un documento en lugar de pasar directamente la forma geoespacial.Para solucionar esto, puedes pasar las
coordinates
directamente en lugar de usar la variablesquare.structure
, de la siguiente manera:Esto debería devolver todos los documentos dentro de la colección
shape
que se encuentren dentro del polígonosquare
.