This is the format of my document:
{
_id: some id,
name: 'some name',
versions: []
}
In the versions
field I store objects like {v: '2.5', count: 5}
where count
holds the number of times a version is in used.
What is the simplest way to do the following?
versions
array if it doesn't existversions
array then increment its count
Simplest way being should be,
db.collection.update({versions.v:'some_version'},{"$inc":{"versions.$.count":1}});
This will increment your count if version is exist, but as MongoDB documentation says, $
operator cannot be mixed with upsert, so above query won't result in insert if {versions.v:'some_version'}
fails.
The positional operator cannot be combined with an upsert since it requires a matching array element. If your update results in an insert then the "$" will literally be used as the field name.
Below are JIRA tickets for supporting upsert with $. You can vote and watch these issue.
Upsert with $-positional operator can create bad documents
Support $ positional operator with an upsert
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