MongoDBのshow dbsコマンドでデータベースが表示されない理由と解決方法
MongoDBでshow dbsコマンドを実行しても、作成したはずのデータベースがリストに表示されないことがあります。その主な原因は、データベース内のコレクションに対してドキュメント(データ)を1件も作成していないことです。MongoDBでは、実際にコレクションへドキュメントを挿入してはじめて、そのデータベースがshow dbsの出力に現れる仕組みになっています。
ここでは、この挙動を実際に確認してみましょう。まず、新しいデータベースを作成します。
> use web; switched to db web
次に、すべてのデータベースを表示するためのクエリを実行します。
> show dbs;
実行すると、以下のような出力が得られます。
admin 0.001GB config 0.000GB local 0.000GB my 0.001GB sample 0.001GB sampleDemo 0.000GB studentSearch 0.000GB test 0.010GB university 0.000GB
ご覧のとおり、直前に作成した「web」データベースは一覧に表示されていません。これは、まだこのデータベース内にコレクションを作成していないためです。
ドキュメントを挿入してデータベースを表示させる方法
「web」データベースを一覧に表示させるには、同じデータベース内にドキュメントを含むコレクションを作成する必要があります。以下のようにinsertOne()メソッドを使ってドキュメントを挿入してみましょう。
> db.check.insertOne({"ClientName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cb806c2623186894665ae35")
}続いて、find()メソッドを使って、作成したコレクション内のすべてのドキュメントを確認します。
> db.check.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5cb806c2623186894665ae35"), "ClientName" : "John" }それでは、改めてすべてのデータベースを表示するコマンドを実行してみましょう。
> show dbs;
今回は以下のような出力になります。
admin 0.001GB config 0.000GB local 0.000GB my 0.001GB sample 0.001GB sampleDemo 0.000GB studentSearch 0.000GB test 0.010GB university 0.000GB web 0.000GB
まとめ
上記の出力例を見ると、「web」データベースが一覧に表示されるようになったことがわかります。つまり、MongoDBではuseコマンドでデータベースを切り替えただけでは実体が作成されず、コレクションへのドキュメント挿入によって初めてデータベースが物理的に生成され、show dbsに反映されるという点を押さえておきましょう。データベースが表示されない場合は、まずコレクションにドキュメントが存在するかどうかを確認してください。
-
なぜC++には仮想コンストラクターが存在しないのか?
仮想機構が機能するための前提条件 C++における仮想(virtual)機構は、「基底クラスのポインタが派生クラスのオブジェクトを指している」という状況でのみ動作します。この仕組みを理解することが、仮想コンストラクターに関する議論を理解する第一歩となります。 コンストラクターをvirtualにできない理由 C++では、コンストラクターを仮想関数にすることはできません。その理由は、クラスのコンストラクターが実行される時点では、メモリ上に仮想関数テーブル(vtable)がまだ作成されておらず、仮想関数へのポインタ(vptr)も定義されていないためです。 仮想関数の仕組みはvtableとvptrに依
-
PHPの&&演算子:条件式がfalseと評価されない理由を解説
PHPの&&演算子がfalseにならない仕組み PHPにおいて&&(論理AND)演算子を使用した場合、接続されたすべての条件がtrueであるときに限り、全体の評価結果がtrueになります。つまり、一つでもfalseとなる条件が存在すれば、その時点で全体の条件はfalseと評価されます。 この基本的なルールを理解すると、「なぜこの条件式がfalseとしてトリガーされないのか」という疑問の答えが見えてきます。条件式の中の各要素がすべてtrueを満たしているため、結果的にtrueが返されるのです。 サンプルコード 以下のPHPコードで実際の動作を確認してみましょう。 <!DOC