2017-01-08 2 views
0

Я пытаюсь извлечь один документ из случайной коллекции, не загружая всю коллекцию в список.

Я знаю, что хочу использовать агрегацию, но я не уверен, как это сделать с помощью Java/Morphia, и я тоже ничего не могу найти в readme.

db.users.aggregate(
    [ { $sample: { size: 1 } } ] 
) 

Как выполнить этот запрос, используя Morphia (в идеале) или через необработанный драйвер Mongodb?

Все вопросы о получении случайного документа кажутся перед 3.2 и выглядят более сложными, чем я думаю, это должно быть.

ответ

0

Фигурные его, в то время как агрегат теперь осуждается он будет делать для моего случая использования

public void findRandomObject() { 
    BasicDBObject object = new BasicDBObject("$sample", new BasicDBObject("size", 1)); 
    AggregationOutput output = getCollection().aggregate(object); 

    for (DBObject result : output.results()) { 
     LOGGER.info("output >> " + result); 
    } 
}