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

マングース:アトミックFindOne-Or-Insert()、見つかった場合は既存のインスタンスを更新しない

    $setOnInsertを使用できます 挿入の場合にのみ適用されるように、更新パラメーターで。ドキュメントがすでに存在する場合、更新はノーオペレーションになります:

    return await Foo.findOneAndUpdate(
      filter,                 // find a document with that filter
      {$setOnInsert: fooDoc}, // document to insert when nothing was found
      { upsert: true, new: true, runValidators: true }
    )
    

    filterに含まれるフィールドにも一意のインデックスを作成する必要があることに注意してください 次に、重複エラーの可能性を処理します。 この投稿 をご覧ください 理由の詳細については。




    1. MongoDBバージョン2.6は、ジオキーを抽出できないことと、不正な形状の可能性があることを理由に、2dsphereジオインデックスで失敗します。

    2. ネストされたオブジェクトを使用したMongooseJSでの$inの使用

    3. MongoDb集計$matchエラー:引数は集計パイプライン演算子である必要があります

    4. イベントをカウントし、集計中に文字列リテラルを挿入します