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

mongoDBで多くの日付を適切にインクリメントするにはどうすればよいですか?

    Mongo 4.2以降 、db.collection.update() 集約パイプラインを受け入れることができ、最終的にそれ自体の値に基づいてフィールドを更新できるようになります。したがって、非効率的な検索/foreachパターンを回避できます。

    また、あなたは$incを見ていました 演算子を使用して1日を追加しますが、集計パイプラインを更新として使用できるようになったため、$add 演算子を使用できます:

    // { "date" : ISODate("2020-04-05T07:14:17.802Z"), "x" : "y" }
    db.collection.updateMany(
      { date : { $exists : true } },
      [{ $set: { date: { $add: ["$date", 24*60*60000] } } }]
    )
    // { "date" : ISODate("2020-04-06T07:14:17.802Z"), "x" : "y" }
    
    • 最初の部分{ date : { $exists : true } } 一致クエリであり、更新するドキュメントをフィルタリングします(この場合、dateを持つすべてのドキュメント) フィールド)。

    • 2番目の部分[{ $set: { date: { $add: ["$date", 24*60*60000] } } }] は更新アグリゲーションパイプラインです(アグリゲーションパイプラインの使用を示す角かっこに注意してください)。 $set は新しい集計演算子であり、$addFieldsのエイリアスです。 。次に、$set内で任意の集計演算子を使用できます ステージ;この場合、単純な$add 既存の日付とミリ秒単位の日の表現との間の関係。



    1. 類似の単語をグループ化するための良い戦略は何ですか?

    2. HadoopのMapReduceキー値ペアとは何ですか?

    3. MongoDb接続が拒否されました

    4. レプリカSetmongodocker-compose