我的模型文档中有一个数组。我想根据我提供的键删除该数组中的元素,然后更新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();
});
});
};
字符串
到目前为止,它找到了文档,但删除或保存工作。
9条答案
按热度按时间mnowg1ta1#
您也可以直接在MongoDB中进行更新,而无需加载文档并使用代码进行修改。使用
$pull
或$pullAll
运算符从数组中删除项:字符串
若要从数组中删除对象,则
型
(you也可以对多个文档使用updateMany)
http://docs.mongodb.org/manual/reference/operator/update/pullAll/
cdmah0mi2#
检查的答案确实有效,但在MongooseJS最新的官方版本中,您应该使用pull。
字符串
https://mongoosejs.com/docs/api.html#mongoosearray_MongooseArray-pull
我也在查。
请看丹尼尔的回答,以获得正确答案。好多了
u91tlkcl3#
上面的答案显示了如何删除数组,这里是如何从数组中提取对象。
参考:https://docs.mongodb.com/manual/reference/operator/update/pull/
字符串
ldioqlga4#
由于收藏夹是一个数组,您只需要将其拼接并保存文档。
字符串
zy1mlcev5#
这对我很有效,真的很有帮助。
字符串
我有一个模型的名称是
SubCategory
,我想从这个类别数组中删除优惠券。我有一个类别数组,所以我使用了arrOfSubCategory
。因此,我在$in
操作符的帮助下,使用map函数从这个数组中获取每个对象数组。eivnm1vs6#
字符串
如果你想使用
...
,你应该在js文件的顶部调用'use strict';
;:)cu6pst1q7#
我在我的项目中使用了这种格式,并且很有效
字符串
9rbhqvlz8#
字符串
kmbjn2e39#
这是一个使用Mongoose的TypeScript示例。
字符串