Details
-
Bug
-
Resolution: Duplicate
-
Major - P3
-
None
-
2.5.0
-
None
-
ALL
Description
conn.update("test.user", BSON("y" << 1), BSON("x" << BSON("a.b" << 1)), true);
|
conn.insert("test.user", BSON("x" << BSON("y.z" << 3)));
|
And end up with a field you cannot refer to on its own:
> db.user.find()
|
{ "_id" : ObjectId("51c85fc622cbaa0259719bca"), "x" : { "a.b" : 1 } }
|
{ "_id" : ObjectId("51c8627822cbaa0259719bcb"), "x" : { "y.z" : 3 } }
|
|
|
> db.user.find({ 'x.a.b': 1 })
|
> db.user.find({ x: { 'a.b': 1 }})
|
{ "_id" : ObjectId("51c85fc622cbaa0259719bca"), "x" : { "a.b" : 1 } }
|
Note: Currently, some drivers already have checks to prevent user from doing this (test on the mongo shell and Ruby driver). Might also want to consider adding the check on the server.
Attachments
Issue Links
- duplicates
-
SERVER-10987 Disallow inserting documents with invalid field names (nested)
-
- Backlog
-
-
SERVER-10547 Do lightweight insert check (not deep okForStorage check)
-
- Closed
-
-
SERVER-10297 Strengthen checks in okForStorage to eliminate production of objects with invalid field names
-
- Closed
-
-
SERVER-10298 Apply okForStorage to object replacement updates in modifier_object_replace
-
- Closed
-