Mongo koleksiyonumu bulamıyor


10

Mongodb sunucumda villageContents adlı bir veritabanı var

Tablebusiness adlı bir koleksiyonu var

Eğer mongo koşarsam gördüm

MongoDB shell version: 2.0.7
connecting to: test
>

Acaba "test" ne? Orada test adında bir veritabanı yok.

İdam etmeye çalıştım

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

İdam etmeye çalıştım

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

Neyi yanlış yaptım?

Sonra yaptım

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

Hiçbir şey görünmüyor. Dizinler bile eklenmez.

Yani ne yanlış?

Yanıtlar:


8

Acaba "test" ne? Orada test adında bir veritabanı yok.

Bu, mongo kabuğunun bağlandığında kullandığı varsayılan veritabanıdır, bir şey eklemediğiniz sürece boştur. Bunu aslında herhangi bir veritabanı ile yapabilirsiniz, test sadece varsayılan.

İlk komut çalışmaz, çünkü db ile önek vermediniz, bu nedenle "isikota" yı bir değişken (javascript) olarak bulmaya çalışır ve bulamıyor. Benzer şekilde bir sonraki denemeniz, var olmayan bir "test" değişkeni için de aynısını yapar.

Son olarak, bu komut doğru formdur (db ile başlayan):

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

Ancak, veritabanını değiştirmediniz (ile use <database name>) veya en azından en azından denemekten bahsetmediniz. Bunun yapacağını test veritabanında "isikota.tablebusiness" adlı bir koleksiyonda "LatitudeLongitude" alanında 2d (geoindex) bir dizin oluşturmaktır (db her zaman kullanmakta olduğunuz veritabanını ifade eder). Bu koleksiyon olmasa bile, dizin oluşturulur (bu yalnızca system.indexes ad alanına bir eklentidir) ve bu nedenle komut başarılı olur. Başka hiçbir şey görmeyeceksiniz, çünkü hala test veritabanında çalıştığınıza inanıyorum.

Verilerinizin aslında "isikota" adlı bir veritabanında olduğunu ve koleksiyonunuzun "tablebusiness" olduğunu varsayarsak, aslında yapmak istediğiniz şey şudur:

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

Bu, "isikota" adlı bir veritabanında "tablebusiness" adlı bir koleksiyonda "LatitudeLongitude" alanında dizin oluşturur.


Gerçekten de test denen bir veritabanı var. Görmedim.
user4951
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.