Как сделать отдельный запрос к полям вложенного документа GORM?

Учитывая Grails 2.3.8 и Mongo 2.6.0, и этот (упрощенный) класс домена:

db.account.findOne()
{
    "name":"Test Account",
    "customer": {
        "state": "CA"
    }
}

где каждая учетная запись имеет поддокумент клиента со строкой "состояние". Чтобы получить список всех состояний для всех клиентов, я хотел бы сделать что-то вроде этого:

def states = Account.createCriteria().list {
    projections{
        distinct("customer.state")
    }
}

Но это не работает из-за существующей ошибки - https://jira.grails.org/browse/GPMONGODB-397

Есть ли обходной путь?

Я могу сделать это:Account.collection.distinct("customer.state")но есть ли более Grails-Ish способ сделать это?

1 ответ

Вы можете использовать "Criteria.DISTINCT_ROOT_ENTITY" для записи DISTINCT.

def users = Account..withCriteria {
        resultTransformer Criteria.DISTINCT_ROOT_ENTITY
}
Другие вопросы по тегам