findOneAndUpdate
で作成された場合、ドキュメントにデフォルトを追加するため (クエリの前には存在しませんでした)、更新でフィールドを指定しなかった場合は、 setDefaultsOnInsert
。
upsert
の場合 およびsetDefaultsOnInsert
どちらもtrue
、レコードが見つからず、新しいレコードが作成された場合、デフォルトが設定されます。これにより、レコードが存在するかどうかを確認し、存在しない場合は、デフォルトが設定されていることを確認するために「保存」を使用して新しいレコードを作成するワークフローがスキップされます。 。
同じ問題が発生しました(findOneAndUpdate
で作成されたレコード upsert: true
を使用 )およびフィールドのデフォルト値は、スキーマに含まれていてもレコードに追加されませんでした。これは、findOneAndUpdate
を使用する場合のデフォルトの追加に関するものです。 'created'フィールドの更新をスキップするためではなく、ドキュメントを作成するため。
例:
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)