Монго не може знайти мою колекцію


10

Мій сервер mongodb має базу даних з назвою villageContents

У ньому є колекція під назвою tablebusiness

Якщо я запускаю монго, я бачив

MongoDB shell version: 2.0.7
connecting to: test
>

Цікаво, що таке "тест". Там немає бази даних з ім'ям тесту.

Я намагався стратити

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

Я намагався стратити

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

Що я зробив не так?

Тоді я і зробив

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

Нічого не з’являється. Індекси навіть не додаються.

Отже, що не так?

Відповіді:


8

Цікаво, що таке "тест". Там немає бази даних з ім'ям тесту.

Це лише база даних за замовчуванням, яку оболонка mongo використовує під час підключення, якщо ви щось не вставите, вона порожня. Ви можете зробити це з будь-якою базою даних насправді, тест - це лише за замовчуванням.

Перша команда не буде працювати, тому що ви не префіксували її db, тому вона намагається знайти "isikota" як змінну (javascript) і не може її знайти. Так само ваша наступна спроба робить те ж саме з неіснуючою "тестовою" змінною.

Нарешті, ця команда - це правильна форма (з префіксом db):

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

Але ви не змінили базу даних (з use <database name>) або, принаймні, не згадали про спробу принаймні. Для цього потрібно створити індекс 2d (geoindex) для поля "LatitudeLongitude" для колекції з назвою "isikota.tablebusiness" у тестовій базі даних (db завжди посилається на базу даних, яку ви зараз використовуєте). Навіть якщо цієї колекції не існує, індекс буде створений (це лише вставка в простір імен system.indexes) і, отже, команда вдається. Ви більше нічого не побачите, тому що я вважаю, що ви все ще працюєте на тестовій базі даних.

Якщо припустити, що ваші дані фактично знаходяться в базі даних під назвою "isikota", і що "tablebusiness" - це ваша колекція, то, що ви насправді хочете зробити, це це:

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

Це створить індекс у полі "LatitudeLongitude" у колекції під назвою "tablebusiness" у базі даних під назвою "isikota".


І справді існує база даних під назвою тест. Я цього не бачив.
user4951
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.