[解決済み] Mongoose ドキュメント内の配列要素を削除して保存する
2022-12-07 12:35:41
質問
モデルドキュメントに配列があります。 その配列の要素を私が指定したキーに基づいて削除し、MongoDBを更新したいと思います。 これは可能ですか?
以下は私の試みです。
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var favorite = new Schema({
cn: String,
favorites: Array
});
module.exports = mongoose.model('Favorite', favorite, 'favorite');
exports.deleteFavorite = function (req, res, next) {
if (req.params.callback !== null) {
res.contentType = 'application/javascript';
}
Favorite.find({cn: req.params.name}, function (error, docs) {
var records = {'records': docs};
if (error) {
process.stderr.write(error);
}
docs[0]._doc.favorites.remove({uid: req.params.deleteUid});
Favorite.save(function (error, docs) {
var records = {'records': docs};
if (error) {
process.stderr.write(error);
}
res.send(records);
return next();
});
});
};
今のところ、ドキュメントは見つかりますが、削除も保存もうまくいきません。
どのように解決するのですか?
ドキュメントを読み込んでコードで修正しなくても、MongoDBで直接更新を行うこともできます。そのためには
$pull
あるいは
$pullAll
演算子を使って、配列から項目を削除します。
Favorite.updateOne({ cn: req.params.name }, {
$pullAll: {
favorites: req.params.deleteUid,
},
});
配列からオブジェクトを削除するには
Favorite.updateOne({ cn: req.params.name }, {
$pullAll: {
favorites: [{_id: req.params.deleteUid}],
},
});
(複数のドキュメントに対してupdateManyを使用することもできます)
http://docs.mongodb.org/manual/reference/operator/update/pullAll/
関連
-
[解決済み】Discord.js が特定のチャンネルにメッセージを送信する場合
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み] (node:63208) DeprecationWarning: collection.ensureIndex は非推奨です。代わりにcreateIndexesを使用してください [重複]。
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み] TypeError: コールバックはnodejsの関数ではありません。
-
[解決済み] バルク更新を行う。
-
[解決済み] -saveと-save-devの違いは何ですか?
-
[解決済み] 特定の値を含む配列で文書を検索する
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み】Mongoose: findOneAndUpdateが更新されたドキュメントを返さない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] バルク更新を行う。
-
[解決済み] mongodbで配列の要素を削除する方法は?