Meu servidor mongodb tem um banco de dados chamado villageContents
Tem uma coleção chamada tablebusiness
Se eu correr mongo eu vi
MongoDB shell version: 2.0.7
connecting to: test
>
Eu me pergunto o que é "teste". Não há nenhum banco de dados chamado teste lá.
tentei executar
> villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:28:28 ReferenceError:is not defined (shell):1
>
tentei executar
> test.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:29:13 ReferenceError: test is not defined (shell):1
>
O que eu fiz errado?
Então eu fiz
db.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Nada aparece. Os índices nem são adicionados.
Então, oque há de errado?
Este é apenas o banco de dados padrão que o shell mongo usa quando se conecta, a menos que você insira algo, ele está vazio. Você pode fazer isso com qualquer banco de dados, de fato, test é apenas o padrão.
O primeiro comando não funcionará porque você não o prefixou com db, como tal, ele tenta encontrar "isikota" como uma variável (javascript) e não consegue encontrá-lo. Da mesma forma, sua próxima tentativa faz o mesmo com uma variável "teste" inexistente.
Finalmente, este comando é a forma correta (prefixada com db):
Mas, você não alterou o banco de dados (com
use <database name>
) ou pelo menos não mencionou tentar pelo menos. O que isso vai fazer é criar um índice 2d (geoindex) em um campo "LatitudeLongitude" em uma coleção chamada "isikota.tablebusiness" no banco de dados de teste (db sempre se refere ao banco de dados que você está usando no momento). Mesmo que essa coleção não exista, o índice será criado (isso é apenas uma inserção no namespace system.indexes) e, portanto, o comando será bem-sucedido. Você simplesmente não verá mais nada, porque acredito que ainda esteja operando no banco de dados de teste.Supondo que seus dados estejam realmente em um banco de dados chamado "isikota" e que "tablebusiness" seja sua coleção, o que você realmente deseja fazer é o seguinte:
Isso criará o índice no campo "LatitudeLongitude" em uma coleção chamada "tablebusiness" em um banco de dados chamado "isikota".