Это мой документ:
{
"_id" : ObjectId("5ccaa152feee5f2e60dff06f"),
"name" : "ABC",
"hobbies" : {
"cricket" : {
"hobbyName" : "cricket"
},
"football" : {
"hobbyName" : "football"
}
}
},
{
"_id" : ObjectId("5ccaa196feee5f2e60dff070"),
"name" : "D",
"hobbies" : {
"Tennis" : {
"hobbyName" : "Tennis"
},
"Volleyball" : {
"hobbyName" : "Volleyball"
},
"basketball" : {
"hobbyName" : "basketball"
}
}
}
var find = [ "Tennis", "football"];
Над моим документом под объектом hobbies
предположим, что есть значение для тенниса и футбола, я хочу сбросить этот конкретный объект
Мой код:
var find = [ "Tennis", "football"];
db.Hobbies.find({})
.forEach(function(doc){
var _id = doc._id;
for(let i=0;i<find.length;i++){
let remove = find[i];
let concate = "hobbies." + remove;
let text = '"'+concate+'"';
db.Hobbies.update(
{'_id': _id},
{$unset: { text : {_id: remove} }}
)
}
})
Мой ожидаемый результат:
{
"_id" : ObjectId("5ccaa152feee5f2e60dff06f"),
"name" : "ABC",
"hobbies" : {
"cricket" : {
"hobbyName" : "cricket"
}
}
},
{
"_id" : ObjectId("5ccaa196feee5f2e60dff070"),
"name" : "D",
"hobbies" : {
"Volleyball" : {
"hobbyName" : "Volleyball"
},
"basketball" : {
"hobbyName" : "basketball"
}
}
}