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
}