Удалить поддокумент, вложенный в массив в MongoDB
Я хочу удалить это:
{
"val" : NumberLong(200),
"chId" : 2,
"reqSys" : "222220005031",
"old" : NumberLong(223),
"isRb" : false
},
из этого:
{
"_id" : ObjectId("52d7c25480f0a83293adbbbc"),
"d" : 2014001,
"m" : 123456789,
"topups" : {
"data" : [
{
"val" : NumberLong(200),
"chId" : 2,
"reqSys" : "222220005031",
"old" : NumberLong(223),
"isRb" : false
},
{
"val" : NumberLong(150),
"chId" : 2,
"reqSys" : "222220005031",
"old" : NumberLong(166),
"isRb" : false
}
],
"total" : {
"cnt" : 2,
"revenue" : NumberLong(3500000)
}
}
Я хотел бы найти объект, {d:2014001, m:123456789}
и удалить весь объект в массиве данных с "val": 200, если это возможно в одной команде. Но если нет, для меня также работают несколько команд. Попробовали с $ pull и $ pullAll, но я что-то упустил.
Ответы
Ответ 1
Чтобы удалить дополнительный документ, используйте $ pull
Этот запрос будет удален из вложенного дополнительного документа
db.collection.update({ d : 2014001 , m :123456789},
{$pull : { "topups.data" : {"val":NumberLong(200)} } } )