Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

比較/ソートの順序

項目一覧

  • 数値タイプ
  • 文字列
  • 配列
  • オブジェクト
  • 日付とタイムスタンプ
  • Non-existent Fields
  • BinData

ソート操作で異なる BSON types の値を比較する場合、MongoDB は最低から最高の順に次の比較順序を使用します。

  1. MinKey(内部型)

  2. null

  3. 数値(ints、longs、doubles、decimals)

  4. シンボル、文字列

  5. オブジェクト

  6. 配列

  7. BinData

  8. ObjectId

  9. ブール値

  10. 日付

  11. タイムスタンプ

  12. 正規表現

  13. JavaScriptコード

  14. MaxKey(内部型)

注意

範囲クエリ演算子は、 BSON型 がクエリ値の型と一致するフィールドに対してのみ比較を実行します。 MongoDBは、ターゲットフィールドのBSON型 が 型のブラケット処理 を通じてクエリオペランドの型と一致するドキュメントに対してのみ、 比較クエリ演算子 による比較を強制します。

MongoDB は、一部の型を比較の目的で同等と見なします。たとえば、数値型は比較する前に変換されます。

デフォルトでは、MongoDB は単純なバイナリ比較を使用して文字列を比較します。

バージョン 3.4 で追加

照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。

照合仕様の構文は次のとおりです。

{
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

照合を指定する場合、locale フィールドは必須です。その他の照合フィールドはすべてオプションです。フィールドの説明については、照合ドキュメントを参照してください。

コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって文字列が比較されます。

配列の比較では、次のようになります。

  • 昇順ソートでは、 BSON型のソート順で配列の最小要素が比較されます。

  • 降順ソートでは、 BSON型のソート順の逆順で配列の最大要素が比較されます。

  • 比較クエリ演算子$lt$gt など)は、配列を辞書編集順に比較します。

  • 値が 1 要素の配列(例、[ 1 ] )と配列以外のフィールド(例、2 )を比較する場合、12 が比較されます。

  • 空の配列(例、[ ] )を比較する場合、空の配列は null 値より小さいか、フィールド値が欠落していると見なされます。

  • ネストされた配列の比較(例:、[[1, 2], [3, 4]] )は、最も外側の配列以降の任意の配列を辞書編集順に比較します。

注意

比較クエリ演算子 は、クエリが配列である場合に 型のブラケット処理 を強制します。インデックス付き値が配列の場合、 演算子はインデックス付き配列に対して要素ごとに型のブラケット処理比較を実行します。

MongoDB の BSON オブジェクトの比較では、次の順序が使用されます。

  1. BSON オブジェクト内に出現する順序でキーと値のペアを再帰的に比較します。

  2. フィールド型を比較します。MongoDB は、フィールド型に対して、最低から最高の順に次の比較順序を使用します。

    1. MinKey(内部型)

    2. null

    3. 数値(ints、longs、doubles、decimals)

    4. シンボル、文字列

    5. オブジェクト

    6. 配列

    7. BinData

    8. ObjectId

    9. ブール値

    10. 日付

    11. タイムスタンプ

    12. 正規表現

    13. JavaScriptコード

    14. MaxKey(内部型)

  3. フィールド型が等しい場合は、キー フィールド名を比較します。

  4. キー フィールド名が等しい場合は、フィールド値を比較します。

  5. フィールド値が等しい場合は、次のキーと値のペアを比較します(手順 1 に戻ります)。それ以上のペアを持たないオブジェクトは、それ以上のペアを持つオブジェクトよりも小さくなります。

Date オブジェクトは Timestamp オブジェクトの前に並べ替えられます。

比較では、存在しないフィールドは null であるかのように扱われます。ドキュメント { }{ a: null }aフィールドで並べ替えを行うと、並べ替え順序においてドキュメントは同等として扱われます。

MongoDB は BinData を次の順序で並べ替えます。

  1. 最初は、データの長さまたはサイズ順。

  2. 次に、BSON 1 バイト サブタイプ順。

  3. 最後に、データ順(符号なしバイトでバイト単位の比較を実行)。

戻る

BSON types