如何使用grails从mongodb中查找不同的记录

如何使用grails从mongodb中查找不同的记录,mongodb,grails,Mongodb,Grails,我对grails非常陌生。我运行的环境需要从mongodb集合中查找不同的记录。我试过一些例子,但没有成功 下面的代码提供了集合中的所有记录。但是,我只需要使用“用户名”作为不同标准的不同记录 def eventMyOrders = EventMyOrders.findAllByEventId( eventID,[sort: 'endEventDateTime', order: 'desc']) 给我“EventMyOrders”集合中的所有订单 如何使用distinct(或Group By)

我对grails非常陌生。我运行的环境需要从mongodb集合中查找不同的记录。我试过一些例子,但没有成功

下面的代码提供了集合中的所有记录。但是,我只需要使用“用户名”作为不同标准的不同记录

def eventMyOrders = EventMyOrders.findAllByEventId( eventID,[sort: 'endEventDateTime', order: 'desc'])
给我“EventMyOrders”集合中的所有订单


如何使用distinct(或Group By)在查询中查找具有不同“用户名”的记录。任何帮助都将不胜感激。提前感谢

如果您只需要不同用户名的列表,可以使用条件查询:

def criteria = EventMyOrders.createCriteria()
def eventsWithDistinctUserName = criteria.list {
    projections {
        distinct("username")
    }
}
其中,
“username”
是EventMyOrders中username的属性名称

如果需要具有不同用户名的EventMyOrder列表,可以使用HQL查询:

  EventMyOrders.executeQuery("select distinct username from EventMyOrders")
或者通过Groovy方式从结果中筛选出非唯一记录:

  EventMyOrders.list().unique {a,b -> a.username <=> b.username}
EventMyOrders.list().unique{a,b->a.username b.username}

这将为我提供用户名数组,但不是整个记录。我已经试过了