Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

createIndex não funcionou

Boa noite,

Estou com problemas para criar o index para efetuar a busca por proximidade no Mongo. Ele emite o erro abaixo:

{ "ok" : 0, "errmsg" : "Index build failed: efc9afb5-8669-407a-95c8-bcebb94fd23c: Collection test.alunos ( 6f7f80e9-2ff0-44d5-bd28-7d5213d10082 ) :: caused by :: Can't extract geo keys: { id: ObjectId('5f96031224493745f17c135b'), nome: "Felipe", datanascimento: new Date(764650800000), curso: { nome: "Psicologia" }, notas: [ 10.0, 9.0, 4.5, 8.5, 8.5, 8.5, 3.0, 8.5 ], habilidades: [ { nome: "inglês", nível: "avançado" }, { nome: "taekewondo", nível: "básico" } ], localizacao: { endereco: "Rua Vergueiro, 3185", cidade: "São Paulo", pais: "Basil", coordinates: [ "-23.588213", "-46.632356" ], type: "Point" } } Point must only contain numeric elements", "code" : 16755, "codeName" : "Location16755" }

3 respostas

Olá Leandro, tudo bem?

Você poderia disponibilizar exatamente o comando que você utilizou para criação deste index? Assim poderei entender melhor o seu problema.

Aguardo o seu retorno!

Boa noite Danielle, segue abaixo comando de criação de index conforme passo a passo do capítulo 03 - Buscando por proximidade do curso.

db.alunos.createIndex({ "localizacao" : "2dsphere" })

Fico no aguardo.

Obrigado,

Leandro.

solução!

Certo Leandro, o problema é que as coordenadas que foram inseridas para um dos registros está como texto, e para ser criado o Index é necessário que todas as coordenas estejam em um tipo numérico.

Segundo a mensagem retornada o problema está no seguinte registro:

{ id: ObjectId('5f96031224493745f17c135b'), 
nome: "Felipe", 
datanascimento: new Date(764650800000), 
curso: { nome: "Psicologia" }, 
notas: [ 10.0, 9.0, 4.5, 8.5, 8.5, 8.5, 3.0, 8.5 ], 
habilidades: [ { nome: "inglês", nível: "avançado" }, { nome: "taekewondo", nível: "básico" } ],
localizacao: { endereco: "Rua Vergueiro, 3185", cidade: "São Paulo", pais: "Basil", 
coordinates: [ "-23.588213", "-46.632356" ], type: "Point" } } 

Então para resolver o problema , você pode remover este aluno do banco de dados ou alterar as coordenadas para um tipo numérico.

Espero ter ajudado Leandro e bons estudos!