Array

7 views
Skip to first unread message

Matteo Feliciani

unread,
Mar 14, 2016, 11:55:03 AM3/14/16
to mongodb-it
Ciao a tutti, sto studiando mongodb e quindi scusatemi se domando cose sciocche.
Il primo problema che non riesco a risolvere è se è possibile modificare un elemento all'interno di un array innestato in un altro array.
Ad esempio in un caso come questo:
{
        "_id" : ObjectId("56e6dd670c2774a7b9df74ed"),
        "data" : ISODate("2016-03-14T15:48:55.469Z"),
        "ricetta" : [
                {
                        "nome" : "carbonara",
                        "quantita" : 300,
                        "ingredienti" : [
                                {
                                        "nome" : "spaghetti",
                                        "quantita" : 200
                                },
                                {
                                        "nome" : "uova",
                                        "quantita" : 3
                                }
                        ]
                }
        ]
}

come posso cambiare la quantità delle "uova" a 2??

Grazie,
Matteo

Giovanni Genovese

unread,
Mar 15, 2016, 4:34:01 AM3/15/16
to mongodb-it
Ciao Matteo.
I nested array sono sempre fastidiosi.
Non sono un grosso esperto, quindi io opterei per una soluzione semplice, ovvero farei due update:
- col primo aggiungo il nuovo elemento (2 uova) all'array degli ingredienti
- col secondo elimino dall'array l'elemento da modificare (3 uova).

Qui sotto i comandi per la shell di Mongo:

db.ricette.update({"ricetta.nome": "carbonara"}, 
{$addToSet: {"ricetta.$.ingredienti": {"nome":"uova", "quantita": NumberInt(2)} } });

db.ricette.update({"ricetta.nome": "carbonara"}, 
{$pull: {"ricetta.$.ingredienti": {"nome":"uova", "quantita": 3} } });

IHTH

Giovanni
Reply all
Reply to author
Forward
0 new messages