Удалить все из субдокумента с помощью mongoose/mongodb
У меня есть коллекция:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
ObjectId = Schema.ObjectId;
var User = new Schema({
id: ObjectId,
name: String,
positionsApplied:[{
position_id:ObjectId,
index_position: Number
}],
})
Мне нужно сделать, это удалить все документы, которые существуют в пределах коллекции положений Приложений с мангустом. Я не уверен, где я иду не так:
app.post('/deleteAll', function(req, res){
User.find(req.user._id, // this is the object Id which matches the logged in user
{$unwind : "$positionsApplied"}).remove().exec(function (err, result) {
console.log(result);
res.send({results:result});
});
});
1 ответ
Схема
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
ObjectId = Schema.ObjectId;
var PositionApplied = new Schema({
position_id:ObjectId,
index_position: Number
}, { _id : false });
var User = new Schema({
_id: ObjectId,
name: String,
random_index_number:Number,
companyname: String,
password: String,
email: String,
username: String,
location: String,
role:String,
teamwork:Number,
initiative:Number,
technical_skills: Number,
communication:Number,
employees: String,
profile_image_link: String,
video_url: String,
biodescription: String,
twitter: String,
facebook: String,
instagram: String,
linkedin: String,
google: String,
biodescription: String,
positionsApplied:[PositionApplied],
experience: [{
title: String,
location: String,
company: String,
start: String,
end:String,
description:String
}],
position: [{
_id:String,
title: String,
location: String,
start: String,
term:Number,
description:String,
teamwork_value:Number,
communication_value:Number,
initiative_value:Number,
pos_index_number:Number,
preference:[{
candidate_id: String,
weightedScore:Number,
position_id:String,
candidate_index_number:Number
}],
date: {type: Date, default: Date.now},
applied:[{
candidate_id: ObjectId,
date: {type: Date, default: Date.now},
profile_image: String,
location: String,
name: String,
_id:ObjectId
}],
}],
education: [{
school: String,
location: String,
degree: String,
start: String,
end:String,
description:String,
_id:String
}],
survey: [{
teamwork:Number,
communication:Number,
initiative:Number
}],
images: [{
one: String,
two: String,
three: String,
four: String,
five:String,
six:String
}],
});
module.exports = mongoose.model('User', User);
module.exports = {
User : mongoose.model('User', User),
PositionApplied : mongoose.model('PositionApplied', PositionApplied)
}
Вызов:
app.post('/deleteall', function(req, res){
User.findOne({_id: req.user._id}, 'positionsApplied', function(err, user){
if (err) return handleError(err);
user.positionsApplied = user.positionsApplied.map(e => e.position_id);
PositionApplied.remove({position_id: {$in: user.positionsApplied}}, function(){
});
}
);
});