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

MongoDB$ninクエリ演算子

    MongoDBでは、$nin クエリ演算子は、フィールドの値が指定された配列にないか、フィールドが存在しないドキュメントを選択します。

    productsというコレクションがあるとします。 次のドキュメントを使用:

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
    { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
    { "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
    { "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
    { "_id" : 5, "prod" : "Jeans", "sizes" : null }
    { "_id" : 6, "prod" : "Shorts" }

    $ninを使用できます 演算子を使用して、特定の_idを持たないドキュメントのみを選択します 値。

    コード例:

    db.products.find({ 
      _id: { $nin: [ 1, 2, 3 ] } 
    })

    結果:

    { "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
    { "_id" : 5, "prod" : "Jeans", "sizes" : null }
    { "_id" : 6, "prod" : "Shorts" }

    この場合、しないドキュメントのみが必要でした。 _idを含む 1の値 、2 、または3

    例2

    別の例を示します。今回は$ninを使用します 別のフィールドに対して。

    db.products.find({ 
      sizes: { $nin: [ "L" ] } 
    })

    結果:

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
    { "_id" : 5, "prod" : "Jeans", "sizes" : null }
    { "_id" : 6, "prod" : "Shorts" }

    この例では、$ninを適用しました sizesに 分野。

    sizesがないにもかかわらず、ドキュメント6が返されたことに注意してください。 分野。これはまったく予想どおりです。フィールドが存在しない場合は、$ninに含まれます。 結果。

    異なるタイプの比較は、BSONの比較順序に従って評価されます。

    集計例

    $matchを使用する場合も、同じ構文を使用できます。 集約パイプライン演算子。

    コード例:

    db.products.aggregate(
       [
         { $match: { _id: { $nin: [ 1, 2, 3 ] } } }
       ]
    )

    結果:

    { "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
    { "_id" : 5, "prod" : "Jeans", "sizes" : null }
    { "_id" : 6, "prod" : "Shorts" }

    そして、ここでもsizesをクエリしている間です フィールド:

    db.products.aggregate(
       [
         { $match: { sizes: { $nin: [ "L" ] } } }
       ]
    )

    結果:

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
    { "_id" : 5, "prod" : "Jeans", "sizes" : null }
    { "_id" : 6, "prod" : "Shorts" }

    正規表現

    /pattern/の形式を使用して、クエリで正規表現を使用できます。 。

    例:

    db.products.find({ 
      sizes: { $nin: [ /^X/ ] } 
    })

    結果:

    { "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
    { "_id" : 5, "prod" : "Jeans", "sizes" : null }
    { "_id" : 6, "prod" : "Shorts" }

    この例では、sizesを持たないすべてのドキュメントを返します Xで始まるフィールド 。


    1. UbuntuからmongoDBをアンインストールします

    2. StackExchange.Redisで基本的なウォッチを行う方法

    3. Sentinelおよびredis-pyでRedisを使用するときに新しいマスターノードにフェイルオーバーするにはどうすればよいですか?

    4. MongoDB C#ドライバーを使用したポリモーフィック型の逆シリアル化