I have a collection with a location field that was entered in the wrong order:
location: [38.7633698, -121.2697997]
When I try to place a 2
Starting from MongoDB 3.4 we can use the $reverseArray operator to do this beautifully.
db.collection.aggregate(
[
{ "$project": { "location": { "$reverseArray": "$location" } } }
]
)
which yields:
{
"_id" : ObjectId("576fdc687d33ed2f37a6d527"),
"location" : [ -121.2697997, 38.7633698 ]
}
To update all the documents in your collection, you have a couple of options.
The first is to add a $out stage to your pipeline and replace the old collection. In this case, you will need to explicitly include all the other field in the $projection stage. The $out
stage look like this:
{ "$out": "collection" }