Вот что я сделал и получил хорошие результаты:
db.getCollection('Album')
.update({ 'name': "a" }, { $pull: { 'file': { 'filename': "def.jpg" } }
}, { multi: true })
до того, как база данных будет выглядеть так:
/* 1 */
{
"_id" : "1",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "abc.jpg",
"size" : "1.mb"
}
]
}
/* 2 */
{
"_id" : "2",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "def.jpg",
"size" : "1.mb"
}
]
}
/* 3 */
{
"_id" : "3",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "ghd.jpg",
"size" : "1.mb"
}
]
}
и после:
/* 1 */
{
"_id" : "1",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "abc.jpg",
"size" : "1.mb"
}
]
}
/* 2 */
{
"_id" : "2",
"name" : "a",
"detail" : "aaa",
"file" : []
}
/* 3 */
{
"_id" : "3",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "ghd.jpg",
"size" : "1.mb"
}
]
}
Iпросто следовал этому: https://docs.mongodb.com/manual/reference/operator/update/pull/
И я не знаю, почему ваш код не работает и в моей базе данных.