Estou trabalhando com node (usando a biblioteca MongoClient) e mongodb, tentando adicionar um índice geoespacial aos meus dados
Os registros da minha coleção possuem um campo de longitude e latitude. Entendo que, para criar um índice geoespacial, você precisa de um campo de localização que corresponda ao formato do ponto geoJson ( https://medium.com/@AbbasPlusPlus/geospatial-data-in-mongodb-storage-indexing-and-queries -1c6db21b7970 ). Portanto, depois de inserir os dados, executo:
async function addLocation() {
const res = collection.updateMany(
{ location: { $exists: false } }, // filter
{
$set: {
location: {
type: "Point",
coordinates: ["$longitude", "$latitude"],
},
},
}
);
}
Em seguida, tentei adicionar um índice geoespacial com:
async function createIndex() {
try {
await collection.createIndex({ location: "2dsphere" });
console.log('Index created');
} catch (err) {
console.error(err);
}
}
Isso dá o erro no título
Olhando os registros, vi a captura de tela. Presumo que os campos longos e lats devam ter números em vez de operadores.
Como posso corrigir addLocation, para que ele coloque valores corretos nos campos longos e lat?
para atualizar campos com base nos valores de outros campos ou se você quiser usar expressões complexas(ex-
$map
etc) você terá que usar a notação de colchetes com atualizaçõesveja o pipeline de agregação com atualizações