Mongo tidak dapat menemukan koleksi saya

10

Server mongodb saya memiliki database bernama villageContents

Ini memiliki koleksi bernama tablebusiness

Jika saya menjalankan mongo saya melihat

MongoDB shell version: 2.0.7
connecting to: test
>

Saya ingin tahu apa "ujian" itu. Tidak ada database yang bernama tes di sana.

Saya mencoba mengeksekusi

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

Saya mencoba mengeksekusi

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

Apa kesalahan yang telah aku perbuat?

Lalu saya lakukan

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

Tidak ada yang muncul. Indeks bahkan tidak ditambahkan.

Jadi apa yang salah?

pengguna4951
sumber

Jawaban:

8

Saya ingin tahu apa "ujian" itu. Tidak ada database yang bernama tes di sana.

Ini hanya database default yang digunakan oleh shell mongo ketika terhubung, kecuali jika Anda memasukkan sesuatu, itu kosong. Anda dapat melakukan ini dengan database apa pun sebenarnya, tes hanyalah default.

Perintah pertama tidak akan berfungsi karena Anda tidak awalan dengan db, karena itu ia berusaha mencari "isikota" sebagai variabel (javascript) dan gagal menemukannya. Demikian pula upaya Anda berikutnya melakukan hal yang sama dengan variabel "tes" yang tidak ada.

Akhirnya, perintah ini adalah formulir yang tepat (diawali dengan db):

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

Tapi, Anda tidak mengubah basis data (dengan use <database name>) atau setidaknya Anda tidak menyebutkan mencoba setidaknya. Apa yang akan dilakukan adalah membuat indeks 2d (geoindex) pada bidang "LatitudeLongitude" pada koleksi bernama "isikota.tablebusiness" di database uji (db selalu merujuk ke database yang sedang Anda gunakan). Bahkan jika koleksi ini tidak ada, indeks akan dibuat (ini hanya sebuah sisipan ke system.indexes namespace) dan karenanya perintah berhasil. Anda tidak akan melihat hal lain, karena saya yakin Anda masih beroperasi pada database pengujian.

Dengan asumsi data Anda sebenarnya dalam database yang disebut "isikota" dan "tablebusiness" adalah koleksi Anda, apa yang sebenarnya ingin Anda lakukan adalah ini:

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

Itu akan membuat indeks pada bidang "LatitudeLongitude" dalam koleksi bernama "tablebusiness" dalam database bernama "isikota".

Adam C
sumber
Dan memang ada database yang disebut tes. Saya tidak melihatnya.
user4951