code: public static DBObject getDBObjectFromCell(Cells cells) {
  
          DBObject bson = new BasicDBObject();
          for (Cell cell : cells) {
              if (cell.getValue() != null) {
                  if (Collection.class.isAssignableFrom(cell.getCellValue().getClass())) {
                      Collection c = (Collection) cell.getCellValue();
                      Iterator iterator = c.iterator();
                      List<Object> innerBsonList = new ArrayList<>();
  
                      while (iterator.hasNext()) {
                          Object currentO = iterator.next();
                          if(currentO instanceof Cells){
                              innerBsonList.add(getDBObjectFromCell((Cells) currentO));
                          }else{
                              innerBsonList.add(currentO);
                          }
                      }
                      bson.put(cell.getCellName(), innerBsonList);
                  } else if (Cells.class.isAssignableFrom(cell.getCellValue().getClass())) {
                      bson.put(cell.getCellName(), getDBObjectFromCell((Cells) cell.getCellValue()));
                  } else {
                      bson.put(cell.getCellName(), cell.getCellValue());
                  }
              }
          }
  
          return bson;
      }
docs: converts from and entity class with deep's anotations to BsonObject
  
  @param cells the cells
  @return bson from cell