Skip to content

Instantly share code, notes, and snippets.

@durran
Created March 24, 2010 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save durran/342738 to your computer and use it in GitHub Desktop.
Save durran/342738 to your computer and use it in GitHub Desktop.
# Problem: Given the following document in the database, I want to update
# Dave Gahan's second prescription for Dilaudid from a quantity of 45 to
# a quantity of 30.
{ "_id" : 1
"name" : "Dave Gahan"
"medications" : [
{ "id" : 23,
"name" : "Dilaudid",
"type" : "Rx",
"prescriptions" : [
{ "id" : 13,
"quantity" : 60,
"started" : 2009-01-01
},
{ "id" : 77,
"quantity" : 45,
"started" : 2009-02-01
}
]
},
{ "id" : 41,
"name" : "Oxycodone",
"type" : "Rx"
}
]
}
# First try was using 1.3.4 $ positional locator... These do not find the
# document embedded multiple levels:
collection.update(
{ "_id" : 1, "medications._id" : 23, "medications.prescriptions._id" : 77 },
{ $set : { "medications.prescriptions.$.quantity" : 30 } },
false,
true
)
collection.update(
{ "_id" : 1, "medications._id" : 23, "medications.prescriptions._id" : 77 },
{ $set : { "medications.$.prescriptions.$.quantity" : 30 } },
false,
true
)
# What I would like is to be able to match on mutliples, given a syntax like the following:
collection.update(
{ "_id" : 1, "medications._id" : 23, "medications.prescriptions._id" : 77 },
{ $set : { "medications.$0.prescriptions.$1.quantity" : 30 } },
false,
true
)
@dlee148
Copy link

dlee148 commented Aug 2, 2016

It's 2016 and this is very much still an issue. I have created a simple workaround using the C# driver, hopefully it helps.
https://gist.github.com/dlee148/a0ec830baff5c71471213616f22cb902

@Guihgo
Copy link

Guihgo commented Jan 13, 2017

any updates ?? *2017

@bantishaw
Copy link

is there any update for this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment