How Do I Add A Value To The Top Of An Array In Mongodb?
Solution 1:
For anybody new to this, MongoDB 2.6+ supports the $position
operator, which can be used to achieve the desired effect. The benefit here being that you don't need to return your entire document array, update it locally and save it - the $position
operator means things can be done atomically.
You need to use it in conjunction with $each
:
$push: { colors: { $each: ['yellow'], $position: 0 } }
Solution 2:
"unshift" inserts data in the front of an array.. whereas "push" inserts it at the end. e.g. in JavaScript:
> a = ['red','green','blue']
[ "red", "green", "blue" ]
> a.unshift("yellow")
4
> a
[ "yellow", "red", "green", "blue" ]
But unfortunately this isn't supported by the Mongo API as an atomic operation:
http://www.mongodb.org/display/DOCS/Updating
it just supports "push"
How big is your array?
you could ether assume that your array in Mongo is always stored in reverse, and use push, or you could read-out the array, modify it with unshift, and then store it again (which wouldn't be atomic though)
Post a Comment for "How Do I Add A Value To The Top Of An Array In Mongodb?"