Получение имени текущей коллекции MongoDB

Я использую mongoDB + Java + SpringData. Можно ли получить текущую коллекцию без названия?

Спасибо!


person EK.    schedule 21.01.2013    source источник
comment
Я не уверен, что вы подразумеваете под получением текущей коллекции? Вы можете использовать несколько коллекций... Если вы хотите просто найти имена всех своих коллекций, вы можете перейти к приглашению mongoDB (mongo your_database_name), а затем запросить список коллекций: db.getCollectionNames()   -  person Ryan Ogle    schedule 21.01.2013
comment
Я не использую командную строку в Java. Я использую данные Spring. Я не хочу иметь дело с жесткими кодовыми именами. Это выглядит плохо.   -  person EK.    schedule 23.01.2013


Ответы (2)


Это мое решение (Java + SpringData).

@Autowired
    private MongoTemplate mongoTemplate;    
DBCollection collection = mongoTemplate.getCollection(mongoTemplate.getCollectionName(MyDocument.class)));
person EK.    schedule 23.01.2013

Если вы хотите взаимодействовать с DBCollection напрямую, вам лучше сделать это через интерфейс CollectionCallback<T> и использовать его следующим образом:

mongoTemplate.execute(new CollectionCallback<Void>() {
  public Void doInCollection(DBCollection collection) throws MongoException {
    // Implement your code here
  }
});

Использование обратного вызова имеет то преимущество, что вы получаете MongoException, потенциально выбрасываемые из вашего собственного кода, преобразованного в иерархию Spring DataAccessException.

person Oliver Drotbohm    schedule 25.01.2013