Doc:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Existe uma maneira de puxar um objeto específico de uma matriz? Por exemplo, como eu puxo todo o objeto de item com id 23 da matriz de itens.
Eu tentei:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
No entanto, tenho quase certeza de que não estou usando 'pull' corretamente. Pelo que entendi, pull puxará um campo de uma matriz, mas não um objeto.
Alguma ideia de como puxar o objeto inteiro para fora da matriz.
Como bônus, estou tentando fazer isso no mongoose / nodejs, também não tenho certeza se esse tipo de coisa está na API do mongoose, mas não consegui encontrar.
Respostas:
tentar..
db.mycollection.update( {'_id': ObjectId("5150a1199fac0e6910000002")}, { $pull: { "items" : { id: 23 } } }, false, true );
fonte
upsert
emulti
. Para sintaxe e documentação atuais, verifique este link: docs.mongodb.com/manual/reference/method/db.collection.updateEu tenho um documento como
Eu tenho que deletar o endereço da matriz de endereços
Depois de pesquisar muito na internet encontrei a solução
Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){ if(err) { return res.status(500).json({'error' : 'error in deleting address'}); } res.json(data); });
fonte
my database:-> { "_id" : ObjectId("5806056dce046557874d3ab18"), "data" : [ { "id" : 1 }, { "id" : 2 }, { "id" : 3 } ] } MY QUERY:-> db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true} OutPut:-> { "_id" : ObjectId("5806056dce046557874d3ab18"), "data" : [ { "id" : 1 }, { "id" : 2 } ] }
fonte
Você também pode tentar:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
fonte
Para um único registro na matriz:
db.getCollection('documents').update( { }, {'$pull':{ 'items':{'mobile': 1234567890 }}}, {new:true} );
Para vários registros com o mesmo número de celular na matriz:
db.getCollection('documents').update( { }, {'$pull':{ 'items':{'mobile': 1234567890 }}}, {new:true,multi:true} )
fonte
Use
$pull
para remover os dadosreturn this.mobiledashboardModel .update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}}) .exec() .then(dashboardDoc => { return { result: dashboardDoc } });
fonte
Kishore Diyyana:
Se você deseja remover todos os elementos, incluindo a chave da lista de atributos de elemento. Aqui está o exemplo de operador não definido mongoDB:
db.UM_PREAUTH_CASE.update ({'Id': 123}, {$ unset: {dataElements: ""}})
JSON se parece com isto:
{"Id": 123, "dataElements": [{"createdBy": "Kishore Babu Diyyana", "createdByUserId": 2020}, {"createdBy": "Diyyana Kishore", "createdByUserId": 2021}]}
fonte