/* * (non-Javadoc) * @see org.springframework.data.mongodb.core.IndexOperations#dropIndex(java.lang.String) */ public void dropIndex(final String name) { mongoOperations.execute( collectionName, new CollectionCallback<Void>() { public Void doInCollection(DBCollection collection) throws MongoException, DataAccessException { collection.dropIndex(name); return null; } }); }
/* * (non-Javadoc) * @see org.springframework.data.mongodb.core.IndexOperations#resetIndexCache() */ public void resetIndexCache() { mongoOperations.execute( collectionName, new CollectionCallback<Void>() { public Void doInCollection(DBCollection collection) throws MongoException, DataAccessException { collection.resetIndexCache(); return null; } }); }
/* * (non-Javadoc) * @see org.springframework.data.mongodb.core.IndexOperations#ensureIndex(org.springframework.data.mongodb.core.index.IndexDefinition) */ public void ensureIndex(final IndexDefinition indexDefinition) { mongoOperations.execute( collectionName, new CollectionCallback<Object>() { public Object doInCollection(DBCollection collection) throws MongoException, DataAccessException { DBObject indexOptions = indexDefinition.getIndexOptions(); if (indexOptions != null) { collection.ensureIndex(indexDefinition.getIndexKeys(), indexOptions); } else { collection.ensureIndex(indexDefinition.getIndexKeys()); } return null; } }); }
/* * (non-Javadoc) * @see org.springframework.data.mongodb.core.IndexOperations#getIndexInfo() */ public List<IndexInfo> getIndexInfo() { return mongoOperations.execute( collectionName, new CollectionCallback<List<IndexInfo>>() { public List<IndexInfo> doInCollection(DBCollection collection) throws MongoException, DataAccessException { List<DBObject> dbObjectList = collection.getIndexInfo(); return getIndexData(dbObjectList); } private List<IndexInfo> getIndexData(List<DBObject> dbObjectList) { List<IndexInfo> indexInfoList = new ArrayList<IndexInfo>(); for (DBObject ix : dbObjectList) { DBObject keyDbObject = (DBObject) ix.get("key"); int numberOfElements = keyDbObject.keySet().size(); List<IndexField> indexFields = new ArrayList<IndexField>(numberOfElements); for (String key : keyDbObject.keySet()) { Object value = keyDbObject.get(key); if (TWO_D_IDENTIFIERS.contains(value)) { indexFields.add(IndexField.geo(key)); } else if ("text".equals(value)) { DBObject weights = (DBObject) ix.get("weights"); for (String fieldName : weights.keySet()) { indexFields.add( IndexField.text( fieldName, Float.valueOf(weights.get(fieldName).toString()))); } } else { Double keyValue = new Double(value.toString()); if (ONE.equals(keyValue)) { indexFields.add(IndexField.create(key, ASC)); } else if (MINUS_ONE.equals(keyValue)) { indexFields.add(IndexField.create(key, DESC)); } } } String name = ix.get("name").toString(); boolean unique = ix.containsField("unique") ? (Boolean) ix.get("unique") : false; boolean dropDuplicates = ix.containsField("dropDups") ? (Boolean) ix.get("dropDups") : false; boolean sparse = ix.containsField("sparse") ? (Boolean) ix.get("sparse") : false; String language = ix.containsField("default_language") ? (String) ix.get("default_language") : ""; indexInfoList.add( new IndexInfo(indexFields, name, unique, dropDuplicates, sparse, language)); } return indexInfoList; } }); }