MongoDBでフィールドの先頭・末尾のスペースを削除する方法($trim演算子の使い方)
MongoDBの$trim演算子とは
MongoDBで文字列フィールドに含まれる余分なスペース(空白)を取り除きたい場合は、集計パイプラインで使える$trim演算子が便利です。$trimは、文字列の先頭と末尾にある空白や指定した文字を削除し、整形された文字列を返します。
この記事では、実際にコレクションを作成しながら、$trimを使ってフィールドのスペースを削除する手順を解説します。
1. サンプルコレクションの作成
まず、insertOne()メソッドを使って、先頭にスペースが含まれるドキュメントを持つコレクションを作成します。
> db.demo217.insertOne({"FullName":" Chris Brown"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3e5d1e03d395bdc213470f")
}
> db.demo217.insertOne({"FullName":" David Miller"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3e5d2503d395bdc2134710")
}
> db.demo217.insertOne({"FullName":" John Doe"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3e5d2b03d395bdc2134711")
}
2. 登録されたドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo217.find();
実行すると、次のような出力が得られます。FullNameフィールドの先頭に不要なスペースが残っているのが分かります。
{ "_id" : ObjectId("5e3e5d1e03d395bdc213470f"), "FullName" : " Chris Brown" }
{ "_id" : ObjectId("5e3e5d2503d395bdc2134710"), "FullName" : " David Miller" }
{ "_id" : ObjectId("5e3e5d2b03d395bdc2134711"), "FullName" : " John Doe" }
3. $trimでスペースを削除するクエリ
ここからが本題です。以下のように、aggregate()内で$projectステージと組み合わせて$trimを使用すると、FullNameフィールドの先頭・末尾のスペースを除去できます。
> db.demo217.aggregate([
... { $project: { Name: { $trim: { input: "$FullName" } } } }
... ])
4. 実行結果
上記のクエリを実行すると、スペースが取り除かれた整形済みの値が新しいフィールド「Name」として出力されます。
{ "_id" : ObjectId("5e3e5d1e03d395bdc213470f"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5e3e5d2503d395bdc2134710"), "Name" : "David Miller" }
{ "_id" : ObjectId("5e3e5d2b03d395bdc2134711"), "Name" : "John Doe" }
補足:$trimのオプション
$trimには、デフォルト以外の文字を削除したい場合に使えるオプションもあります。
- input:対象となる文字列を指定します(必須)。
- chars:削除したい文字を指定します。省略した場合、空白文字(半角スペース、タブ、改行など)が削除されます。
例えば、文字列の両端からハイフンを削除したい場合は次のように書きます。
{ $trim: { input: "--Hello World--", chars: "-" } }
また、類似の演算子として、$ltrim(先頭のみ削除)や$rtrim(末尾のみ削除)も用意されているので、用途に応じて使い分けるとよいでしょう。
-
MongoDBでSQLのLIKE検索と同じことを実現する方法
MongoDBにおけるLIKE検索の基本SQLの「LIKE」句のように部分一致でデータを検索したい場合、MongoDBでは find() メソッドと正規表現(//)を組み合わせることで同様の処理を実現できます。この記事では、実際にコレクションを作成し、正規表現を使ったLIKE検索の具体的な手順を解説します。テスト用コレクションの作成まず、サンプルとなるドキュメントを含むコレクションを作成しましょう。ここでは「FirstName」というフィールドを持つドキュメントをいくつか登録します。> db.demo686.insertOne({FirstName:Robert});{ &nb
-
【MySQL】生年月日(D.O.B)フィールドから年齢を計算して取得する方法
MySQLで生年月日(D.O.B)フィールドから年齢を求めるには、現在の日付から生年月日の「年」を差し引くのが基本となる考え方です。ここでは、CURDATE()関数とYEAR()関数を組み合わせた基本的な構文を紹介します。 基本の構文 SELECT yourColumnName1, yourColumnName2, ........N, YEAR(CURDATE()) - YEAR(yourDOBColumnName) AS anyVariableName FROM yourTableName; この構文では、現在の年(CURDATE()からYEAR()で抽出)から生年月日の年を