MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBでフィールドから返される文字数を制限する方法をわかりやすく解説

MongoDBでフィールドの文字数を制限するには?

MongoDBでは、フィールドから返される文字数を制限したい場合、$substr演算子を使用します。$substrを使うことで、指定した位置から指定した文字数だけ文字列を切り出して取得できます。

この記事では、実際にコレクションを作成し、$substrを使って文字数を制限する手順を順番に解説します。

1. ドキュメントを含むコレクションを作成する

まずはサンプルとなるドキュメントを挿入してコレクションを作成しましょう。以下のコマンドを実行します。

> db.demo233.insertOne({"Paragraph":"My Name is John Smith.I am learning MongoDB database"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e41877df4cebbeaebec5146")
}
> db.demo233.insertOne({"Paragraph":"David Miller is a good student and learning Spring and Hibernate Framework."});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4187d7f4cebbeaebec5147")
}

2. find()メソッドでドキュメントを表示する

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.demo233.find().pretty();

上記のコマンドを実行すると、次のような出力が得られます。

{
   "_id" : ObjectId("5e41877df4cebbeaebec5146"),
   "Paragraph" : "My Name is John Smith.I am learning MongoDB database"
}
{
   "_id" : ObjectId("5e4187d7f4cebbeaebec5147"),
   "Paragraph" : "David Miller is a good student and learning Spring and Hibernate Framework."
}

3. $substrで文字数を制限するクエリを実行する

それが本題である、フィールドから返される文字数を制限するクエリです。aggregate()メソッドと$projectステージを組み合わせて、$substrを適用します。

$substrは「[フィールド, 開始位置, 文字数]」という形式で指定します。以下の例では、先頭(0文字目)から10文字分だけを取得しています。

> db.demo233.aggregate(
...    [
...       {
...          $project:
...          {
...             Paragraph: { $substr: [ "$Paragraph", 0, 10] }
...          }
...       }
...    ] )

実行結果

上記のクエリを実行すると、各ドキュメントの「Paragraph」フィールドから先頭10文字のみが返されていることが確認できます。

{ "_id" : ObjectId("5e41877df4cebbeaebec5146"), "Paragraph" : "My Name is" }
{ "_id" : ObjectId("5e4187d7f4cebbeaebec5147"), "Paragraph" : "David Mill" }

補足:$substrBytesと$substrCPについて

なお、MongoDBのバージョン3.4以降では、より明確な名前を持つ次の2つの演算子が提供されています。

  • $substrBytes:バイト単位で部分文字列を取得します。マルチバイト文字を含む場合は注意が必要です。
  • $substrCP:コードポイント単位(実質的に文字数単位)で部分文字列を取得します。日本語などのマルチバイト文字列を扱う場合に推奨されます。

$substrは非推奨(deprecated)の扱いとなっているため、新規開発では$substrCPまたは$substrBytesの使用を検討するとよいでしょう。

  1. HTMLの入力フィールドに値の範囲制限を設定する方法(min属性・max属性)

    HTMLの<input>タグは、ユーザーからデータを受け取るためのフォーム部品を作成する際に使用します。数値や日付などの入力フィールドに「入力できる値の範囲」を制限したい場合は、min属性とmax属性を活用しましょう。min属性には入力フィールドで許容される最小値を、max属性には最大値をそれぞれ指定します。この2つの属性は、以下の入力タイプ(type属性)と組み合わせて使用できます。number(数値)range(レンジスライダー)date(日付)datetime / datetime-local(日時)month(月)time(時刻)week(週)記述例次のサンプルコードでは、

  2. 【HTML】フォームの入力テキストフィールドで文字数を制限する方法(maxlength属性の使い方)

    HTMLの<input>タグは、ユーザーからの入力を受け取るために使用される要素です。入力フィールドに値の範囲制限を設けたい場合は、min属性とmax属性を使用します。これらはそれぞれ、入力フィールドに設定できる最小値と最大値を指定するための属性です。一方、入力できる文字数そのものを制限したい場合には、maxlength属性を使用します。なお、min属性とmax属性が使えるのは、number、range、date、datetime、datetime-local、month、time、weekといった入力タイプのみである点に注意してください。コード例以下のコードを実行すると、フォーム