如何对 GORM 子文档字段进行不同的查询?

Posted

技术标签:

【中文标题】如何对 GORM 子文档字段进行不同的查询?【英文标题】:How do you make a distinct query on GORM subdocument fields? 【发布时间】:2014-10-11 22:17:21 【问题描述】:

给定 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 的方式来做到这一点?

【问题讨论】:

【参考方案1】:

您可以将“Criteria.DISTINCT_ROOT_ENTITY”用于 DISTINCT 记录。

def users = Account..withCriteria 
        resultTransformer Criteria.DISTINCT_ROOT_ENTITY

【讨论】:

以上是关于如何对 GORM 子文档字段进行不同的查询?的主要内容,如果未能解决你的问题,请参考以下文章

Grails 查询不使用 GORM

包含gorm.modle的结构体如何查询

我可以对索引子文档字段执行 MongoDB“开始于”查询吗?

如何根据查询从子文档数组中更新子文档字段?

如何对查询中的字段进行编程,以在该记录的子数据表中显示逗号分隔的唯一值列表?

如何使用spring MongoTemplate查询子文档,并按子文档的某个字段排序?