145

node.jsでMongoDBにアクセスするためにMongoose Libraryを使用しています

ドキュメントからキーを削除する方法はありますか? つまり、値を 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();
});
4

11 に答える 11

213

初期のバージョンでは、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);
于 2011-08-04T09:06:43.370 に答える
66

あなたはこれをしたいでしょう:

User.findOne({}, function(err, user){
  user.key_to_delete = undefined;
  user.save();
});
于 2011-05-09T02:52:41.410 に答える
41

私はマングースを使用しており、上記の関数のいずれかを使用すると要件が満たされました。関数はエラーなしでコンパイルされますが、フィールドはそのまま残ります。

user.set('key_to_delete', undefined, {strict: false} );

私のためにトリックをしました。

于 2016-09-28T11:30:14.827 に答える
10

mongo 構文でいくつかのキーを削除するには、次の操作を行う必要があります。

{ $unset : { field : 1} }

Mongoose でも同じようです。

編集

この例を確認してください。

于 2010-12-20T09:02:24.113 に答える
1

これは、使用するような副次的な問題でしょうか

function (user)

それ以外の

function(err, user)

検索のコールバック用? 私はすでにケースを抱えていたので、これを手伝おうとしています。

于 2011-04-12T20:46:02.057 に答える
-6

delete user._doc.key を使用できます

于 2016-10-18T11:55:21.663 に答える