это моя коллекция футболистов mongoDb:
[
{
"_id" : ObjectId("5d83b4a7e5511f28847f1884"),
"prenom" : "djalil",
"pseudo" : "dja1000",
"email" : "djalil@gmail.com",
"selectionned" : [
{
"_id" : "5d83af3be5511f28847f187f",
"role" : "footballeur",
"prenom" : "Gilbert",
"pseudo" : "Gilbert",
},
{
"_id" : "5d83b3d5e5511f28847f1883",
"role" : "footballeur",
"prenom" : "Xavier",
"pseudo" : "xav4544",
}
]
},
{
"_id" : ObjectId("5d83afa8e5511f28847f1880"),
"prenom" : "Rolande",
"pseudo" : "Rolande4000",
"email" : "rolande@gmail.com",
"selectionned" : [
{
"_id" : "5d83b3d5e5511f28847f1883",
"role" : "footballeur",
"prenom" : "Xavier",
"pseudo" : "xav4544",
}
]
}
}
Как я могу удалить всех выбранных людей, которые имеют 5d83b3d5e5511f28847f1883 _id через всю коллекцию?
Мне нужен ксавье, чтобы исчезнуть излюбой «выделенный» массив, точно так же как и «удалить каскад» на языке SQL
Это то, что я безуспешно пытался:
function delete_fb_from_all(fb){
var ObjectId = require('mongodb').ObjectID; //working
var idObj = ObjectId(fb._id); //working
try {
db.collection('footballers').remove( { "selectionned._id" : idObj } );
console.log('All have been erased');
} catch (e) {
console.log(e);
}
}
И это тоже не работает:
db.collection('footballers.selectionned').remove( { "_id" : idObj } );
Я действительно не знаю, как это сделать.
Я пробую это прямо сейчас:
db.collection.update({'footballers.selectionned': idObj }, {$pull: {footballers:{ selectionned: idObj}}})
Это ошибка:
TypeError: db.collection.update is not a function
Я думаю, что решение может быть там: https://docs.mongodb.com/manual/reference/operator/update/pull/#pull-array-of-documents
РЕДАКТИРОВАТЬ 1
В настоящее время я пробую это:
var ObjectId = require('mongodb').ObjectID; //working
var idObj = ObjectId(fb._id); //working
try {
db.collection('footballers').update(
{ },
{ $pull: { selectionned: { _id: idObj } } },
{ multi: true }
)
} catch (e) {
console.log(e);
}
РЕШЕНО:
Указывая адрес электронной почты, он теперь работает, я думаю, проблема была в поле _id:
try {
db.collection('footballers').update(
{ },
{ $pull: { selectionned: { email: fb.email } } },
{ multi: true }
)
} catch (e) {
console.log(e);
}