it-swarm.com.de

Mongo kann meine Sammlung nicht finden

Mein Mongodb-Server hat eine Datenbank namens villageContents

Es hat eine Sammlung namens tablebusiness

Wenn ich Mongo renne, habe ich gesehen

MongoDB Shell version: 2.0.7
connecting to: test
>

Ich frage mich, was "Test" ist. Dort gibt es keine Datenbank mit dem Namen test.

Ich habe versucht auszuführen

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

Ich habe versucht auszuführen

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

Was habe ich falsch gemacht?

Dann habe ich getan

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

Es zeigt sich nichts. Indizes werden nicht einmal hinzugefügt.

Also, was ist falsch?

10
user4951

Ich frage mich, was "Test" ist. Dort gibt es keine Datenbank mit dem Namen test.

Dies ist nur die Standarddatenbank, die die Mongo-Shell beim Herstellen einer Verbindung verwendet. Sofern Sie nichts einfügen, ist sie leer. Sie können dies mit jeder Datenbank tun. Test ist nur die Standardeinstellung.

Der erste Befehl funktioniert nicht, da Sie ihm kein db vorangestellt haben. Daher versucht er, "isikota" als Variable (Javascript) zu finden, und findet ihn nicht. In ähnlicher Weise macht Ihr nächster Versuch dasselbe mit einer nicht existierenden "Test" -Variablen.

Schließlich ist dieser Befehl die richtige Form (mit dem Präfix db):

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

Sie haben die Datenbank jedoch nicht geändert (mit use <database name>) oder zumindest hast du nicht erwähnt, es zumindest zu versuchen. Dazu wird ein 2d-Index (Geoindex) für ein Feld "LatitudeLongitude" in einer Sammlung mit dem Namen "isikota.tablebusiness" in der Testdatenbank erstellt (db bezieht sich immer auf die Datenbank, die Sie gerade verwenden). Auch wenn diese Auflistung nicht vorhanden ist, wird der Index erstellt (dies ist nur eine Einfügung in den Namespace system.indexes), und daher ist der Befehl erfolgreich. Sie werden einfach nichts anderes sehen, weil ich glaube, dass Sie immer noch an der Testdatenbank arbeiten.

Angenommen, Ihre Daten befinden sich tatsächlich in einer Datenbank namens "isikota" und "tablebusiness" ist Ihre Sammlung. Was Sie tatsächlich tun möchten, ist Folgendes:

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

Dadurch wird der Index für das Feld "LatitudeLongitude" in einer Sammlung mit dem Namen "tablebusiness" in einer Datenbank mit dem Namen "isikota" erstellt.

8
Adam C