This validation failure does not occur in 3.2.7. It was introduced in 3.3.6 and seems indicative of a validate() bug rather than a dataloss issue.
Repro script:
'use strict'; var coll = db.geo_partial; coll.drop(); coll.insert({x: 1}); coll.ensureIndex({x: '2dsphere'}, {partialFilterExpression: {a: {$eq: 1}}}); coll.validate(true);
Validate output:
{ "ns" : "test.geo_partial", "valid" : false, "warnings" : [ ], "errors" : [ "exception during index validation: 16755 Can't extract geo keys: { _id: ObjectId('5783dbe528816e25ea30fe08'), x: 1.0 } geo element must be an array or object: x: 1.0" ], "advice" : "A corrupt namespace has been detected. See http://dochub.mongodb.org/core/data-recovery for recovery steps.", "ok" : 1 }