This code assumes that projection keys are StringValue since MapValue is [String, Value].