$ unset配列が存在しない場合、MongoDBはスローしません

ドミニク

私はこのような更新操作をしています:

await project.update({
  $pull: {
    languages: { _id: ObjectId(languageId) },
  },
  $unset: {
    [`entries.$[].${languageId}`]: 1,
  },
  $set: {
    revisions: project.revisions,
  },
});

ただし、entries配列が存在しない場合、これはエラーをスローします。

name: 'MongoError',
index: 0,
code: 2,
errmsg: "The path 'entries' must exist in the document in order to apply array updates.",

存在する場合は設定を解除する方法はありますが、存在しない場合はエラーをスローしませんか?

mickl

ドキュメントで実行updateする代わりに、モデルレベルでproject実行し、$ exists演算子を使用してフィールドに条件を追加できますentries

Project.updateOne({ _id: project._id, entries: { $exists: true } } , {
    $pull: {
        languages: { _id: ObjectId(languageId) },
    },
    $set: {
        revisions: project.revisions,
    },
    $unset: {
        [`entries.$[].${languageId}`]: 1
    }
});

問題は、存在しないentries場合、このドキュメントは一致せず、上記の操作は実行されないことです。

未定義でない$unsetかどうかをチェックするクエリの一部を追加することもできproject.entriesますがentries、その間に他のスレッドが配列を削除する場合は、これらのエラーに備える必要があります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ページが存在しない場合、例外はスローされません

分類Dev

追加するファイルが存在しない場合、addFilePatternはFileNotFoundExceptionをスローしません

分類Dev

Mongodbが実行されていない場合、Mongoose.connectはエラーをスローしません

分類Dev

レコードが存在しない場合、MongoDB findはエラーを返しませんか?

分類Dev

IDが存在しない場合、テストJUnitdeleteByIdは合格しません

分類Dev

キーが存在しない場合は値を配列にプッシュしますマングース

分類Dev

Laravel:関係が存在しない場合はエラーを表示しません

分類Dev

MongoDBは、存在しない場合は配列に値を追加します

分類Dev

存在しない場合は、マングースがアイテムを配列にプッシュします

分類Dev

AngularJSでログインした後、認証ヘッダーが存在しない場合、SpringSecurityはエラーをスローしません

分類Dev

MongoDB配列はJavascriptで定義されていませんが、データベースに存在します

分類Dev

MongoDBアトミック「findOrCreate」:findOne、存在しない場合は挿入しますが、更新しません

分類Dev

MySQLは存在する場合は選択しますが、存在しない場合は値を表示しません

分類Dev

MongoDb:存在しない場合は配列に要素を追加

分類Dev

MongoDb:存在しない場合は配列に要素を追加

分類Dev

MongoDb:存在しない場合は配列に要素を追加

分類Dev

ソーステーブルに行が1つしかない場合、MATCHを使用した配列数式は結果を返しません

分類Dev

ステートメントタイプが存在しない場合、かみそりはありません

分類Dev

配列を使用した人物の名前による番号の線形検索-名前が存在しない場合、メソッドは機能しません

分類Dev

オブジェクトプロップが配列に存在しない場合は更新します

分類Dev

配列内の要素を確認し、データベースにデータが存在しない場合は

分類Dev

mysqliが有効になっていない場合、PHPは例外をスローしません

分類Dev

ファイルが存在しない場合、バイト配列エラーをエスケープします

分類Dev

値が存在する場合は配列を比較し、存在しない場合はインデックスに値を追加します

分類Dev

Dapperを使用してストアドプロシージャを実行しても、行が存在しない場合は列ヘッダーが返されません

分類Dev

tee-ファイルが存在しない場合は何もしません

分類Dev

MongoDB更新配列要素(キー付きのドキュメント)が存在する場合、存在しない場合はプッシュ

分類Dev

グループは存在する場合と存在しない場合がありますが、存在するため追加できません

分類Dev

グループは存在する場合と存在しない場合がありますが、存在するため追加できません

Related 関連記事

  1. 1

    ページが存在しない場合、例外はスローされません

  2. 2

    追加するファイルが存在しない場合、addFilePatternはFileNotFoundExceptionをスローしません

  3. 3

    Mongodbが実行されていない場合、Mongoose.connectはエラーをスローしません

  4. 4

    レコードが存在しない場合、MongoDB findはエラーを返しませんか?

  5. 5

    IDが存在しない場合、テストJUnitdeleteByIdは合格しません

  6. 6

    キーが存在しない場合は値を配列にプッシュしますマングース

  7. 7

    Laravel:関係が存在しない場合はエラーを表示しません

  8. 8

    MongoDBは、存在しない場合は配列に値を追加します

  9. 9

    存在しない場合は、マングースがアイテムを配列にプッシュします

  10. 10

    AngularJSでログインした後、認証ヘッダーが存在しない場合、SpringSecurityはエラーをスローしません

  11. 11

    MongoDB配列はJavascriptで定義されていませんが、データベースに存在します

  12. 12

    MongoDBアトミック「findOrCreate」:findOne、存在しない場合は挿入しますが、更新しません

  13. 13

    MySQLは存在する場合は選択しますが、存在しない場合は値を表示しません

  14. 14

    MongoDb:存在しない場合は配列に要素を追加

  15. 15

    MongoDb:存在しない場合は配列に要素を追加

  16. 16

    MongoDb:存在しない場合は配列に要素を追加

  17. 17

    ソーステーブルに行が1つしかない場合、MATCHを使用した配列数式は結果を返しません

  18. 18

    ステートメントタイプが存在しない場合、かみそりはありません

  19. 19

    配列を使用した人物の名前による番号の線形検索-名前が存在しない場合、メソッドは機能しません

  20. 20

    オブジェクトプロップが配列に存在しない場合は更新します

  21. 21

    配列内の要素を確認し、データベースにデータが存在しない場合は

  22. 22

    mysqliが有効になっていない場合、PHPは例外をスローしません

  23. 23

    ファイルが存在しない場合、バイト配列エラーをエスケープします

  24. 24

    値が存在する場合は配列を比較し、存在しない場合はインデックスに値を追加します

  25. 25

    Dapperを使用してストアドプロシージャを実行しても、行が存在しない場合は列ヘッダーが返されません

  26. 26

    tee-ファイルが存在しない場合は何もしません

  27. 27

    MongoDB更新配列要素(キー付きのドキュメント)が存在する場合、存在しない場合はプッシュ

  28. 28

    グループは存在する場合と存在しない場合がありますが、存在するため追加できません

  29. 29

    グループは存在する場合と存在しない場合がありますが、存在するため追加できません

ホットタグ

アーカイブ