1. ホーム
  2. mongodb

[解決済み] Mongoose を使って MongoDB ドキュメントからキーを削除する

2022-05-10 09:24:01

質問

を使っています。 マングース node.jsでMongoDBにアクセスするためのライブラリ

の方法はありますか? 文書からキーを削除する ?すなわち、単に値をnullに設定するだけでなく、それを削除するのですか?

User.findOne({}, function(err, user){
  //correctly sets the key to null... but it's still present in the document
  user.key_to_delete = null;

  // doesn't seem to have any effect
  delete user.key_to_delete;

  user.save();
});

どのように解決するのですか?

初期のバージョンでは、node-mongodb-native ドライバを落とす必要があったはずです。各モデルはnode-mongodb-nativeが提供する全てのメソッドを含むコレクションオブジェクトを持っています。これで問題の動作ができるわけです。

User.collection.update({_id: user._id}, {$unset: {field: 1 }});

バージョン2.0からできるようになりました。

User.update({_id: user._id}, {$unset: {field: 1 }}, callback);

また、バージョン2.4からは、すでにモデルのインスタンスを持っている場合は、それができるようになりました。

doc.field = undefined;
doc.save(callback);