HOWTO · MongoDB

MongoDB での文字列長のクエリ

このチュートリアルでは、MongoDB で文字列の長さを使用してクエリを実行する方法について説明します。

このページの内容

場合によっては、文字列の長さなどの例外的なプロパティを使用して特定のドキュメントを検索する必要があります。 この記事では、MongoDB で文字列の長さを使用して特定のドキュメントを検索する方法を説明し、トピックに関する例を見て理解しやすくします。

文字列の長さに基づいてコレクション内の特定のドキュメントを検索する

コレクションから特定のドキュメントを見つけるには、find() という非常に一般的な MongoDB の組み込みメソッドを使用します。 ただし、文字列の長さに基づいてドキュメントを見つけたい場合は、いくつかの例外的な基準を提供する必要があります。

次の例では、文字列の長さに基づいて特定のドキュメントを見つける 2つの方法を紹介します。

以下の例では、文字列の長さに基づいてドキュメントを見つける方法を示します。

しかし、最初に、私たちのコレクションで利用可能なドキュメントを確認しましょう。 この目的のために、以下のコマンドを使用します。

db.mydata.find()

上記のコマンドは、mydata コレクション内のすべてのドキュメントを表示します。

{ _id: ObjectId("63713371117701ff3d627b56"),
  Name: 'Alen',
  Email: 'abc@gmail.com',
  Year: 2018 }
{ _id: ObjectId("63713371117701ff3d627b57"),
  Name: 'Max',
  Email: 'max@gmail.com',
  Year: 2017 }
{ _id: ObjectId("63713371117701ff3d627b58"),
  Name: 'Ethen',
  Email: 'ethen@gmail.com',
  Year: 2019 }
{ _id: ObjectId("63713371117701ff3d627b59"),
  Name: 'Alex',
  Email: 'alex@gmail.com',
  Year: 2020 }

上記は、私たちのコレクションで利用可能なドキュメントです。 次のステップに進みましょう。

次に、文字列の長さに基づいてドキュメントを検索するために使用できるメソッドを見てみましょう。 この目的のために、Name フィールドの長さを取得します。

$where キーワードを使用する

この目的のために、キーワード $where を使用できます。 コマンドは次のようになります。

db.mydata.find({ $where: 'this.Name.length > 4' })

集計を使用する

集約を使用する場合は、次のコマンドを実行できます。

db.mydata.find({
Name: { $exists: true },
$expr: { $gt: [{ $strLenCP: '$Name' }, 4] } })

上記のコマンドで、キーワード $gt はより大きいを意味します。 MongoDB コンソールで両方のコマンドを実行すると、次のように同じ出力が得られます。

{ _id: ObjectId("63713371117701ff3d627b58"),
  Name: 'Ethen',
  Email: 'ethen@gmail.com',
  Year: 2019 }

この記事に示されているコマンドは MongoDB データベース用であり、コマンドは MongoDB コンソールで実行する必要があることに注意してください。