-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: 2.5.0
-
Component/s: Internal Client, Write Ops
-
None
-
ALL
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.
- 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