25

オブジェクトに対してuser.save()を呼び出しています。ここで、user.signup_date=nullを設定します。

user.first_name = null;
user.signup_date = null;

user.save();

しかし、mongodbのユーザーを見ると、signup_dateとfirst_nameがまだ設定されています...このフィールドを空またはnullとして効果的に設定するにはどうすればよいですか?

4

5 に答える 5

51

これらのプロパティを既存のドキュメントから削除するには、ドキュメントを保存する前undefinedにではなく、に設定します。null

user.first_name = undefined;
user.signup_date = undefined;

user.save();

Mongoose5.9.7でまだ機能していることを確認しました。これを機能させるには、削除しようとしているフィールドをスキーマで定義する必要があることに注意してください。

于 2012-09-28T12:31:59.943 に答える
4

代わりに次のようにsetメソッドを試してみると、違いがありますか?

user.set('first_name', null);
user.set('signup_date', null);
user.save();

または、保存時にエラーが発生した可能性があります。保存するとどうなりますか。

user.save(function (err) {
    if (err) console.log(err);
});

ログに何かを印刷しますか?

于 2012-09-28T09:33:08.750 に答える
4

undefinedもう1つのオプションは、これらのプロパティに関してデフォルト値を定義することです。

次のようなもの:

let userSchema = new mongoose.Schema({ first_name: { type: String, default: undefined }, signup_date: { type: Date, default: undefined } })

于 2018-03-21T15:35:54.027 に答える
1

フィールドを削除するだけ

delete user.first_name;
delete user.signup_date;
user.save();
于 2012-09-28T15:20:36.427 に答える
1

マングースのドキュメント(スキーマタイプ)で、説明に進むことができますArrays。そこに、それはこれを言います:

配列は、デフォルト値[](空の配列)を暗黙的に持っているため、特別です。

var ToyBox = mongoose.model('ToyBox', ToyBoxSchema);
console.log((new ToyBox()).toys); // []

このデフォルトを上書きするには、default値を次のように設定する必要がありますundefined

要素内に追加しましたtoys

var ToyBoxSchema = new Schema({
     toys: {
          type: [{
              name: String,
              features: [String]
          }],
          default: undefined
     }
});
于 2019-03-14T10:47:59.180 に答える