如果设置了某些属性,我正在尝试从用户或其团队中获取所有活动,这些活动也按某些类型进行过滤。
这就是我现在所拥有的:
Activity.withCriteria{
and{
or {
eq 'user',myUser
"in" 'team',userTeams
}
and{
if (showA || showB || showC){
or{
if (showA){
"in" "a", myAList
}
if (showB){
"in" "b", myBList
}
if (showC){
"in" "c",myCList
}
}
}
}
}
order "date","desc"
maxResults maxElements
}
执行它,我得到的是用户和团队块的 OR 和 showA、showB、showC 块,而不是这两个块的 AND。
我正在使用 grails 2.2.1(也使用没有 Hibernate 的 MongoDB GORM 1.2.0)
编辑:
我已经能够看到发送到 MongoDB 的查询并且它没有执行标准的第一部分。这是传递给 MongoDB 的查询:
query: { query: { $or: [ { a: { $in: [ "5191e2c7c6c36183687df8b6", "5191e2c7c6c36183687df8b7", "5191e2c7c6c36183687df8b8" ] } }, { b: { $in: [ "5191e2c7c6c36183687df8b9", "5191e2c7c6c36183687df8ba", "5191e2c7c6c36183687df8bb" ] } }, { c: { $in: [ "5191e2c7c6c36183687df8b5" ] } } ] }, orderby: { date: -1 } } ntoreturn: 10 ntoskip: 0
编辑:我刚刚看到已经提出了一个 JIRA,这似乎是一个 MongoDB 插件问题...... http://jira.grails.org/browse/GPMONGODB-296