del OP no coinciden. Él realmente quiere insertar un campo en una matriz dentro del documento, lo que significa que
db.posts.update({name: "Hello, world!" }, { $push: {comments: "First comment!"}});
funciona bien.
Sin embargo, si desea agregar un valor o subdocumento a un diccionario, usaría el comando $set
. Tome este documento como nuestro ejemplo:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10
}
}
Digamos que usted desea agregar "apples": 2
a los artículos. El comando sería
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": 2}});
El documento tendría el siguiente aspecto:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10,
"apples: 2
}
}
Tenga en cuenta que esto funciona con la inserción de subdocumento, así, por lo que podemos modificar el original ejemplo:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
}
}
}
E inserte 4 manzanas granny smith y 8 manzanas fuji.
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": {"fuji": 8, "granny smith": 4}}});
Nuestro documento sería ahora:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
},
"apples": {
"fuji": 8,
"granny smith": 4
}
}
}
Un último comentario: tenga en cuenta que si el subdocumento o campo ya existe, entonces será anulado por el comando $set
.
He editado la pregunta para que sea una "pregunta real".Si esto aún no cumple con sus estándares, dígame cuál es el problema. –
Para agregar un elemento a una matriz, creo que lo que desea es $ push o $ addToSet: http://www.mongodb.org/display/DOCS/Updating – matulef