MongoDBで数値のみの文字列を選択する方法をわかりやすく解説
MongoDBでは、正規表現を活用することで、文字列フィールドの中から「数値のみで構成された文字列」を簡単に抽出できます。この記事では、サンプルコレクションの作成から、数値文字列だけを検索するクエリの実行方法まで、具体例とともに解説します。
サンプルコレクションの作成
まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成しましょう。
> db.selectOnlyNumericDemo.insertOne({"UserId":"User101"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdb711de8cc557214c0e16")
}
> db.selectOnlyNumericDemo.insertOne({"UserId":"102"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdb716de8cc557214c0e17")
}
> db.selectOnlyNumericDemo.insertOne({"UserId":"User103"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdb71dde8cc557214c0e18")
}
> db.selectOnlyNumericDemo.insertOne({"UserId":"104"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdb725de8cc557214c0e19")
}このコレクションには、「User101」のように文字を含む値と、「102」のように数字のみの値が混在しています。
すべてのドキュメントを表示する
find()メソッドを使って、コレクション内のすべてのドキュメントを確認します。
> db.selectOnlyNumericDemo.find().pretty();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5cbdb711de8cc557214c0e16"), "UserId" : "User101" }
{ "_id" : ObjectId("5cbdb716de8cc557214c0e17"), "UserId" : "102" }
{ "_id" : ObjectId("5cbdb71dde8cc557214c0e18"), "UserId" : "User103" }
{ "_id" : ObjectId("5cbdb725de8cc557214c0e19"), "UserId" : "104" }数値文字列のみを選択するクエリ
文字列が数値であるかどうかを判定し、数字のみで構成された文字列だけを抽出するには、次のような正規表現をfind()メソッドの条件に指定します。
> db.selectOnlyNumericDemo.find({'UserId': /^\d+$/});この正規表現 /^\d+$/ の各要素の意味は以下の通りです。
^:文字列の先頭を表します\d+:1個以上の数字に一致します$:文字列の末尾を表します
つまり、「先頭から末尾まですべて数字で構成されている文字列」のみがマッチします。「User101」のように数字を含んでいても文字が混ざっている値は除外されます。実行結果は次の通りです。
{ "_id" : ObjectId("5cbdb716de8cc557214c0e17"), "UserId" : "102" }
{ "_id" : ObjectId("5cbdb725de8cc557214c0e19"), "UserId" : "104" }まとめ
MongoDBで数値文字列のみを抽出したい場合は、正規表現 /^\d+$/ をfind()メソッドの検索条件として指定するのが最もシンプルで確実な方法です。なお、先頭と末尾のアンカー(^ と $)を付け忘れると、「User101」のように部分的に数字を含む文字列までマッチしてしまうため、注意しましょう。
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、
-
Tkinterでラジオボタンを使って選択肢を1つだけ選ぶ方法
複数の選択肢の中からユーザーに1つだけ選ばせたい場合には、Radiobutton(ラジオボタン)ウィジェットを使用します。TkinterのRadiobuttonウィジェットは、あらかじめ用意された選択肢のグループから、必ず1つの項目のみを選択できるようにするための部品です。ラジオボタンはTrue/Falseという2つのブール値を持っており、同じ変数(variable)を共有する複数のラジオボタンは互いに排他的に動作します。そのため、1つを選ぶと他の選択は自動的に解除されます。ユーザーがどの選択肢を選んだのかをプログラム側で取得したい場合は、get()メソッドを使います。このメソッドは、変数に設