Как сделать отдельный запрос к полям вложенного документа 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
}