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

MongoDB $ inc

    MongoDBには$incがあります 値を特定の量だけインクリメントできるフィールド更新演算子。

    正の値と負の値を使用できます(つまり、値をインクリメントまたはデクリメントします)。

    フィールドがまだ存在しない場合は、指定された値で作成されます。

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

    { "_id" : 1, "name" : "Wag", "weight" : 10 }

    ここでは、weight フィールドには、インクリメントまたはデクリメントできる値が含まれています。

    インクリメント

    $incを使用できます update()と組み合わせた演算子 この犬の体重を増やす方法。

    このように:

    db.dogs.update(
      { _id: 1 },
      { $inc: { weight: 5 } }
    )

    出力:

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

    これは、1つのドキュメントが一致して変更されたことを示しています。

    コレクションをもう一度確認しましょう:

    db.dogs.find()

    結果:

    { "_id" : 1, "name" : "Wag", "weight" : 15 }

    犬の体重が5増加したことがわかります。

    デクリメント

    $incに負の値を指定すると、値をデクリメントできます。 オペレーター。

    このように:

    db.dogs.update(
      { _id: 1 },
      { $inc: { weight: -5 } }
    )

    出力:

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

    コレクションを確認してください:

    db.dogs.find()

    結果:

    { "_id" : 1, "name" : "Wag", "weight" : 10 }

    重量が5減少したことがわかります。

    存在しないフィールドをインクリメントする

    ドキュメントに存在しないフィールドをインクリメントすると、フィールドが追加され、指定された値が割り当てられます。

    例:

    db.dogs.update(
      { _id: 1 },
      { $inc: { weight: 1, height: 30 } }
    )

    出力:

    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

    2つのフィールドを更新したことに注意してください。 weight フィールドとheight フィールド(元々は存在しませんでした)。

    ドキュメントをもう一度確認しましょう:

    db.dogs.find()

    結果:

    { "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }

    weight フィールドは1だけインクリメントされています 、および新しいheight 30の指定値でフィールドが追加されました 。


    1. MongoParseError:オプションuseCreateIndex、useFindAndModifyはサポートされていません

    2. 文字列がMongoDBObjectIDであるかどうかを判断できますか?

    3. 永続性のためのRedisキャッシュとMongoのアーキテクチャ

    4. redis、express、socket.ioを使用してセッションを機能させるにはどうすればよいですか?