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

マングースのアップサートはデフォルトのスキーマプロパティを作成しません

    何が起こっているのかというと、findByIdAndUpdateのような「update」ファミリーのメソッドを呼び出すときに、Mongooseの検証、ミドルウェア、またはデフォルト値のいずれも使用されないということです。 。これらは、saveの呼び出しによってのみ呼び出されます またはcreate

    これは、「更新」呼び出しがネイティブドライバーへのパススルーであり、Mongooseがスキーマ定義に基づいたフィールドの型キャストのみを提供するためです。

    マングース4.0アップデート

    Mongooseは、update中に新しいドキュメントが作成されたときのデフォルトの設定をサポートするようになりました。 、findOneAndUpdate 、またはfindByIdAndUpdate アップサート。 setDefaultsOnInsertを設定します trueへのオプション これを有効にします。これは$setOnInsertを使用します 挿入時にデフォルトを作成する演算子。

    var queryOptions = {
        upsert: true,
        setDefaultsOnInsert: true
    };
    Company.findByIdAndUpdate(id, company, queryOptions).exec( ...
    


    1. コレクションを1000単位で読み通す方法は?

    2. meteorを使用してデータベースにフォーム値(json形式)を挿入します

    3. Nodejsページ付け

    4. Mac OS 10.15(Catalina)にアップグレードした後、MongoDBがデータディレクトリを見つけることができません