I am doing something wrong or I don't understand $push (probably don't understand). Anyway I have the following document:
{
"_id" : ObjectId("501c83051d41c8753e000000"),
"node" : "denver",
"enc" : {
"environment" : "production",
"classes" : {
"denver" : ""
}
},
"inherit" : "default"
}
And I am trying to make the document
{
"_id" : ObjectId("501c83051d41c8753e000000"),
"node" : "denver",
"enc" : {
"environment" : "production",
"classes" : {
"denver" : "",
"boulder" : ""
}
},
"inherit" : "default"
}
This is what my update statement looks like:
col.update(
{
'node' : 'denver'
},
{
'$push': {
'enc.classes' : {
'boulder': ''
}
}
},
True)
I don't get an error but the document never updates. If I change $push to $set then the denver is replaced with boulder.
Thanks for any assistance.
$push
does not work in this case because you are trying to use an array function on an object.
To use $push
you would need to change your data structure to the following:
{
"_id" : ObjectId("501c83051d41c8753e000000"),
"node" : "denver",
"enc" : {
"environment" : "production",
"classes" : [
"denver"
]
},
"inherit" : "default"
}
Then your query would be:
col.update(
{
'node' : 'denver'
},
{
'$push': {
'enc.classes' : 'boulder'
}
},
True
)
This query works.
db.foo.update({"node": "denver"}, {"$set": {"enc.classes.boulder": ""}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With