MongoDBでアンダースコア(_)から始まるコレクションを作成・クエリする方法
MongoDBでアンダースコア(_)から始まるコレクションを操作する方法
MongoDBでは、コレクション名をアンダースコア(_)で始めることも可能です。ただし、シェルからdb._コレクション名の形式で直接アクセスすると、意図したとおりに解釈されない場合があるため、db.getCollection()メソッドを使ってアクセスするのが安全で推奨される方法です。
1. コレクションの作成
アンダースコアで始まるコレクションを作成するには、次の構文を使用します。
db.createCollection('_yourCollectionName');
2. ドキュメントの挿入
ドキュメントを挿入する場合も、db.getCollection()を介して以下のように記述します。
db.getCollection('_yourCollectionName').insertOne({"yourFieldName1":"yourValue1","yourFieldName2":yourValue2,............N});
実行例:コレクションの作成とドキュメントの挿入
それでは、実際にアンダースコアで始まるコレクションを作成し、ドキュメントを挿入してみましょう。
> db.createCollection('_testUnderscoreCollectionDemo');
{ "ok" : 1 }
> db.getCollection('_testUnderscoreCollectionDemo').insertOne({"StudentFirstName":"John","StudentAge":23});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ccfb4a6140b992277dae0e4")
}
> db.getCollection('_testUnderscoreCollectionDemo').insertOne({"StudentFirstName":"Carol","StudentAge":21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ccfb4af140b992277dae0e5")
}
3. find()メソッドですべてのドキュメントを表示する
作成したコレクション内のすべてのドキュメントを取得して表示するには、find()メソッドを使用します。pretty()を付けると、見やすい整形された形式で出力されます。
> db.getCollection('_testUnderscoreCollectionDemo').find().pretty();
上記のクエリを実行すると、次のような出力が得られます。
{
"_id" : ObjectId("5ccfb4a6140b992277dae0e4"),
"StudentFirstName" : "John",
"StudentAge" : 23
}
{
"_id" : ObjectId("5ccfb4af140b992277dae0e5"),
"StudentFirstName" : "Carol",
"StudentAge" : 21
}
まとめ
このように、アンダースコアで始まるコレクション名でも特別な制約はありませんが、確実に操作するためにはdb.getCollection('コレクション名')を使用するのがベストプラクティスです。コレクションの作成にはcreateCollection()、ドキュメントの挿入にはinsertOne()、データの取得にはfind()を組み合わせることで、スムーズにデータベース操作を行えます。
-
MongoDBで大文字と小文字を区別せずに検索する方法($regexの使い方)
MongoDBで大文字と小文字を区別しない(ケースインセンシティブな)検索を実行したい場合は、find()メソッドの中で正規表現($regex)を使用します。基本となる構文は以下の通りです。db.demo572.find({yourFieldName : { $regex : /^yourValue$/i}});正規表現のポイントこの構文で重要なのは、パターンの末尾に付ける「i」オプションです。このフラグを指定することで、マッチング時に大文字と小文字の違いが無視されます。また、^(先頭)と$(末尾)で値を囲むことで、部分一致ではなく完全一致の検索になります。それでは、実際にサンプルコレクション
-
MongoDBでコレクション内のドキュメントの各フィールドを数式を使って更新する方法
コレクション内のドキュメントの各フィールドを数式(計算式)で一括更新したい場合は、MongoDBの update() メソッドに $mul 演算子と全位置演算子 $[] を組み合わせて使用します。本記事では、配列内のすべての要素に対して特定のフィールドの値を乗算で更新する具体的な手順を解説します。サンプルコレクションの作成まず、insertOne() メソッドを使って、ドキュメントを含むコレクションを作成します。> db.demo749.insertOne({details:[{id:1,a:10},{id:2,a:5},{id:3,a:20}]}); { acknowledge