Mongo ne trouve pas ma collection

10

Mon serveur mongodb a une base de données nommée villageContents

Il a une collection nommée tablebusiness

Si je cours mongo j'ai vu

MongoDB shell version: 2.0.7
connecting to: test
>

Je me demande ce qu'est un "test". Il n'y a pas de base de données nommée test là-bas.

J'ai essayé d'exécuter

> villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:28:28 ReferenceError:is not defined (shell):1
>

J'ai essayé d'exécuter

> test.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:29:13 ReferenceError: test is not defined (shell):1
>

Qu'ai-je fait de mal?

Alors j'ai fait

db.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})

Rien n'apparaît. Les index ne sont même pas ajoutés.

Alors, qu'est-ce qui ne va pas?

user4951
la source

Réponses:

8

Je me demande ce qu'est un "test". Il n'y a pas de base de données nommée test là-bas.

C'est juste la base de données par défaut que le shell mongo utilise lorsqu'il se connecte, sauf si vous insérez quelque chose, elle est vide. Vous pouvez le faire avec n'importe quelle base de données en fait, test est juste la valeur par défaut.

La première commande ne fonctionnera pas car vous ne l'avez pas préfixée avec db, en tant que telle, elle tente de trouver "isikota" en tant que variable (javascript) et ne la trouve pas. De même, votre prochaine tentative fait de même avec une variable "test" inexistante.

Enfin, cette commande est la bonne forme (préfixée par db):

db.isikota.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})

Mais, vous n'avez pas changé de base de données (avec use <database name>) ou du moins vous n'avez pas mentionné d'essayer au moins. Ce que cela va faire, c'est créer un index 2D (géoindex) sur un champ "LatitudeLongitude" sur une collection nommée "isikota.tablebusiness" dans la base de données de test (db fait toujours référence à la base de données que vous utilisez actuellement). Même si cette collection n'existe pas, l'index sera créé (il s'agit simplement d'une insertion dans l'espace de noms system.indexes) et donc la commande réussit. Vous ne verrez rien d'autre, car je pense que vous travaillez toujours sur la base de données de test.

En supposant que vos données se trouvent réellement dans une base de données appelée "isikota" et que "tablebusiness" est votre collection, ce que vous voulez réellement faire est le suivant:

use isikota;
db.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"});

Cela va créer l'index sur le champ "LatitudeLongitude" dans une collection nommée "tablebusiness" dans une base de données nommée "isikota".

Adam C
la source
Et il existe en effet une base de données appelée test. Je ne l'ai pas vu.
user4951