PyMongoでコレクション名に変数を使用する方法を解説
結論:PyMongoでもコレクション名に変数は使用できます
PyMongoは、PythonからMongoDBを操作するためのツール群を含む公式ディストリビューションです。コレクション名をコードに直接書き込むのではなく、変数として動的に扱いたい場面はよくあります。結論から言うと、これは可能です。ポイントは、ドット(.)によるアクセスの代わりに角括弧([])構文を使うことです。
基本構文
コレクション名に変数を使用する際の基本的な書き方は以下のとおりです。
var yourVariableName = "yourCollectionName";
db[yourVariableName].yourOperationName;
通常は db.collectionName.find() のようにドットでつなぎますが、db[変数名] と記述することで、文字列として保持したコレクション名を使って各種操作を実行できます。
MongoDBシェルでの実行例
実際に、変数を使ったコレクションに対してドキュメントを挿入してみましょう。まず変数にコレクション名を格納し、insertOne() メソッドで3件のドキュメントを順に追加します。
> var storeCollectionName = "new_Collection";
> db[storeCollectionName].insertOne({"UserName":"John","UserAge":21});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c912aea4afe5c1d2279d6a0")
}
> db[storeCollectionName].insertOne({"UserName":"Carol","UserAge":24});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c912af54afe5c1d2279d6a1")
}
> db[storeCollectionName].insertOne({"UserName":"Mike","UserAge":27});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c912afe4afe5c1d2279d6a2")
}
すべての挿入処理で「acknowledged : true」が返されているため、ドキュメントが正常に登録されたことが確認できます。
挿入したドキュメントの確認
find() メソッドを使えば、コレクション内のすべてのドキュメントを取得できます。
> db[storeCollectionName].find().pretty();
実行結果は以下のとおりです。
{
"_id" : ObjectId("5c912aea4afe5c1d2279d6a0"),
"UserName" : "John",
"UserAge" : 21
}
{
"_id" : ObjectId("5c912af54afe5c1d2279d6a1"),
"UserName" : "Carol",
"UserAge" : 24
}
{
"_id" : ObjectId("5c912afe4afe5c1d2279d6a2"),
"UserName" : "Mike",
"UserAge" : 27
}Python(PyMongo)から変数でコレクションを扱う例
同じ考え方はPyMongoからもそのまま応用できます。Pythonでは db["コレクション名"] の形式がそのまま利用可能です。
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["sampleDB"]
# コレクション名を変数に格納
store_collection_name = "new_Collection"
collection = db[store_collection_name]
collection.insert_one({"UserName": "John", "UserAge": 21})
for doc in collection.find():
print(doc)
コレクション名を変数化しておけば、ループ処理で複数のコレクションをまとめて操作したり、設定ファイルからコレクション名を読み込んだりといった柔軟な実装が可能になります。
まとめ
- PyMongoおよびMongoDBシェルでは、db[変数名] の角括弧構文でコレクション名に変数を使用できる
- ドット記法と異なり、文字列型の変数をそのままコレクション名として渡せる
- 動的なコレクションの切り替えや一括処理など、柔軟なプログラミングに役立つ
-
Javaで定義済みクラス名をクラス名や変数名として使う方法
Javaでは、NumberやStringなど、あらかじめ標準ライブラリに用意されている(事前定義された)クラスと同じ名前を、独自のクラス名や変数名として使用することが可能です。ただし、いくつか注意すべきポイントがあります。ここでは、具体的なコード例を挙げながら詳しく解説します。 定義済みクラス名をクラス名として使用する まず、定義済みクラス名をそのままクラス名として使う例を見てみましょう。 コード例 public class Number { public static void main(String[] args) {  
-
位置追跡に粒子アルゴンを使用する方法
プロジェクトにプレゼンスまたは位置追跡を追加したいと思ったことはありませんか?解決策 (またはその欠如) に不満を感じていますか? 心配しないでください。あなただけではありません! この投稿では、非常に基本的な追跡および通知アプリケーションを実装する方法を学びます。 Particle Argon と Tile Mate を使用します。 最後に、タイルが存在するかどうかを判断できるようになります。さらに、Pushover を使用して、選択したデバイスにプッシュ通知を送信します。 始めましょう! 注意 始める前に、この投稿は長いです . PDF バージョンをダウンロードして、保存して後で