Mongo kann meine Sammlung nicht finden


10

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?

Antworten:


8

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 db nicht 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"})

Aber Sie haben die Datenbank (mit use <database name>) nicht geändert oder zumindest nicht erwähnt , dass Sie es zumindest versucht haben. 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.


Und es gibt tatsächlich eine Datenbank namens Test. Ich habe es nicht gesehen.
user4951
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.