sql >> データベース >  >> NoSQL >> MongoDB

配列要素に複数の基準を指定する

    ドキュメントの内容を理解するには、まず、配列を使用した範囲クエリがどのように機能するかを理解する必要があります。

    コレクションに次のドキュメントがあるとします。

    { "finished" : [ 27, 3 ] },
    { "finished" : 17 }
    

    最初のクエリ:

    db.users.find( { "finished": { "$elemMatch": { "$gt": 15, "$lt": 20 } } } )
    

    「finished」が配列であるドキュメントのみを返します。これは、$elemMatchが原因です。 演算子は、フィールドが配列であり、単一の要素がすべてのクエリ条件を満たすドキュメントにのみ一致します。

    しかし、2番目のクエリ:

    db.users.find( { "finished": { "$gt": 15, "$lt": 20 } } )
    

    おそらくあなたが望むものではない両方のドキュメントを27として返します 20より大きい および3 15未満です 。これは、27 最初の基準に一致し、3 二番目。この動作は、ドキュメントに記載されているものです。

    ... 1つの要素が15を超える条件を満たすことができ、別の要素が20未満の条件を満たすことができるか、または1つの要素が両方を満たすことができます:

    結論:

    配列に対する範囲クエリは、すべてのクエリ条件に一致する配列内の1つまたは複数の要素に一致します。

    レッスン:

    配列で範囲クエリを使用しないでください。予期しない結果が発生します。



    1. MongoDBシェルのすべてのコレクションを一覧表示するにはどうすればよいですか?

    2. Spark HBaseコネクタ–1年のレビュー

    3. クラウドでのオープンソースデータベースの自動化と管理-ClusterControl1.6の発表

    4. NoSqlデータベース(MongoDB)で外部キーを適用するにはどうすればよいですか?