Mongo non riesce a trovare la mia collezione


10

Il mio server mongodb ha un database chiamato villageContents

Ha una collezione chiamata tablebusiness

Se corro mongo ho visto

MongoDB shell version: 2.0.7
connecting to: test
>

Mi chiedo che cos'è "test". Non esiste un database chiamato test lì.

Ho provato a eseguire

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

Ho provato a eseguire

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

Che cosa ho fatto di sbagliato?

Poi l'ho fatto

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

Nulla si presenta. Gli indici non vengono nemmeno aggiunti.

Quindi cosa c'è che non va?

Risposte:


8

Mi chiedo che cos'è "test". Non esiste un database chiamato test lì.

Questo è solo il database predefinito utilizzato dalla shell mongo quando si connette, a meno che non si inserisca qualcosa, è vuoto. Puoi farlo con qualsiasi database, infatti, test è solo il valore predefinito.

Il primo comando non funzionerà perché non è stato prefissato con db, in quanto tale tenta di trovare "isikota" come variabile (javascript) e non riesce a trovarlo. Allo stesso modo il tuo prossimo tentativo fa lo stesso con una variabile "test" inesistente.

Infine, questo comando è nella forma giusta (con il prefisso db):

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

Ma non hai modificato il database (con use <database name>) o almeno non hai menzionato il tentativo di farlo. Quello che sta per fare è creare un indice 2d (geoindex) su un campo "LatitudeLongitude" su una raccolta denominata "isikota.tablebusiness" nel database di test (db si riferisce sempre al database che si sta attualmente utilizzando). Anche se questa raccolta non esiste, verrà creato l'indice (questo è solo un inserimento nello spazio dei nomi system.indexes) e quindi il comando ha esito positivo. Semplicemente non vedrai nient'altro, perché credo che tu stia ancora operando sul database di test.

Supponendo che i tuoi dati si trovino effettivamente in un database chiamato "isikota" e che "tablebusiness" sia la tua raccolta, quello che realmente vuoi fare è questo:

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

Ciò creerà l'indice sul campo "LatitudeLongitude" in una raccolta denominata "tablebusiness" in un database chiamato "isikota".


E c'è davvero un database chiamato test. Non l'ho visto
user4951
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.