private DBObject applyFieldFilter(DBObject object) {
   if (object instanceof GridFSFile) {
     GridFSFile file = (GridFSFile) object;
     DBObject metadata = file.getMetaData();
     if (metadata != null) {
       file.setMetaData(applyFieldFilter(metadata));
     }
   } else {
     object = MongoDBHelper.applyExcludeFields(object, definition.getExcludeFields());
     object = MongoDBHelper.applyIncludeFields(object, definition.getIncludeFields());
   }
   return object;
 }
  @Override
  protected String save(UrnObject urnObject) {
    ByteArrayInputStream stream = new ByteArrayInputStream(urnObject.bytes);

    DBObject metadata = new BasicDBObject();
    metadata.put(FIELD_STORED, urnObject.stored);

    if (AssertUtils.isNotEmpty(urnObject.name)) {
      metadata.put(FIELD_NAME, urnObject.name);
    }
    if (AssertUtils.isNotEmpty(urnObject.name)) {
      metadata.put(FIELD_MIME, urnObject.mime);
    }
    if (urnObject.expiry > 0) {
      metadata.put(FIELD_EXPIRY, urnObject.expiry);
    }

    GridFSFile file = this.template.store(stream, urnObject.key, urnObject.mime, metadata);
    if (file == null) {
      return null;
    }

    return file.getFilename();
  }