モンゴは私のコレクションを見つけることができません


10

私のmongodbサーバーには、villageContentsという名前のデータベースがあります

tablebusinessという名前のコレクションがあります。

モンゴを走らせたら

MongoDB shell version: 2.0.7
connecting to: test
>

「テスト」って何なんだろう。そこには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

「テスト」って何なんだろう。そこにはtestという名前のデータベースはありません。

これは、接続時にmongoシェルが使用するデフォルトのデータベースにすぎません。何かを挿入しない限り、空です。実際、どのデータベースでもこれを行うことができます。テストはデフォルトです。

最初のコマンドは、dbのプレフィックスを付けなかったため機能しません。そのため、「isikota」を変数(JavaScript)として見つけようとし、それを見つけることができません。同様に、次の試行では、存在しない「テスト」変数を使用して同じことを行います。

最後に、このコマンドは正しい形式です(接頭辞はdbです)。

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

しかし、データベースを(でuse <database name>)変更していないか、少なくとも変更しようとすることについては言及していません。これにより、テストデータベースの「isikota.tablebusiness」という名前のコレクションの「LatitudeLongitude」フィールドに2D(geoindex)インデックスが作成されます(dbは常に現在使用しているデータベースを指します)。このコレクションが存在しない場合でも、インデックスが作成され(これはsystem.indexes名前空間への単なる挿入です)、したがってコマンドは成功します。まだテストデータベースで操作していると思うので、他には何も表示されません。

データが「isikota」というデータベースに実際にあり、「tablebusiness」がコレクションであると想定すると、実際に実行したいのは次のとおりです。

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

「isikota」というデータベースの「tablebusiness」というコレクションの「LatitudeLongitude」フィールドにインデックスが作成されます。


実際、testというデータベースがあります。見なかった。
user4951 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.