Please refer to the following code:
// on mongodb 1.8.x
use test_db
db.revs.save({})
doc = db.revs.findOne()
db.revs.update(
, { $inc :
{ "versions.2_01" : 1 }} )
db.revs.findOne()
{
"_id" : ObjectId("4f699826d603f81fdec82a62"),
"versions" :
}
db.revs.update(
{ _id : doc._id }, { $inc :
{ "versions.2_1" : 1 }} )
db.revs.findOne()
{
"_id" : ObjectId("4f699826d603f81fdec82a62"),
"versions" :
}
db.revs.update(
{ _id : doc._id }, { $inc :
{ "versions.2_01" : 1 , "01" : 1 } } )
db.revs.findOne()
{
"_id" : ObjectId("4f699826d603f81fdec82a62"),
"versions" :
,
"01" : 1
}
db.revs.update(
{ _id : doc._id }, { $inc :
{ "versions.2_01" : 1 , "1" : 1 } } )
db.revs.findOne()
{
"_id" : ObjectId("4f699826d603f81fdec82a62"),
"versions" :
,
"1" : 2 // key magically changed to 1 !!!
}
//==========================================================
// on mongodb 2.0.x
use test_db
db.revs.save({})
doc = db.revs.findOne()
db.revs.update(
, { $inc :
{ "versions.2_01" : 1 }} )
db.revs.findOne()
{
"_id" : ObjectId("4f69a044e5ce33194e694fdc"),
"versions" :
}
db.revs.update(
{ _id : doc._id }, { $inc :
{ "versions.2_1" : 1 }} )
db.revs.findOne()
{
"_id" : ObjectId("4f69a044e5ce33194e694fdc"),
"versions" :
}
db.revs.update(
{ _id : doc._id }, { $inc :
{ "versions.2_01" : 1 , "01" : 1 } } )
db.revs.findOne()
{
"_id" : ObjectId("4f69a044e5ce33194e694fdc"),
"versions" :
,
"01" : 1
}
db.revs.update(
{ _id : doc._id }, { $inc :
{ "versions.2_01" : 1 , "1" : 1 } } )
db.revs.findOne()
{
"_id" : ObjectId("4f69a044e5ce33194e694fdc"),
"versions" :
,
"1" : 2 // key magically changed to 01 agin in 2.0.x, this kind of bug (0x) still not fully fixed !!!
}
- duplicates
-
SERVER-4776 improper application of modifiers with numerically equivalent string field names
- Closed