MongoDB+;Grails:如何使用Grails中的$all操作符
我在一个对象上有一系列标记,我想查询包含作为数组传递的所有标记的对象。我知道在MongoDB中,in和inList中的运算符转换为$in运算符,但是$in将返回至少包含一个提供的标记的任何对象。我想要包含所有提供的标记的对象。或者说另一种方式$in表示带有t1、t2或t3等的findAll标记。我想要带有t1、t2和t3等的findAll标记。Mongodb为此幸运地支持$all操作符 那么,如何从Grail的GormMongoDB插件执行一个使用$all运算符的查询呢?我必须使用低级API吗?如果是这样,我如何让低级API返回完全填充的域对象MongoDB+;Grails:如何使用Grails中的$all操作符,mongodb,grails,gorm-mongodb,Mongodb,Grails,Gorm Mongodb,我在一个对象上有一系列标记,我想查询包含作为数组传递的所有标记的对象。我知道在MongoDB中,in和inList中的运算符转换为$in运算符,但是$in将返回至少包含一个提供的标记的任何对象。我想要包含所有提供的标记的对象。或者说另一种方式$in表示带有t1、t2或t3等的findAll标记。我想要带有t1、t2和t3等的findAll标记。Mongodb为此幸运地支持$all操作符 那么,如何从Grail的GormMongoDB插件执行一个使用$all运算符的查询呢?我必须使用低级API吗?
或者有没有比使用$all操作符更好的查询选项,它具有更好的性能,让我停留在GORM的标准查询范围内?好的,我觉得我差不多每隔两周就这样做一次,但我现在开始记录MongoDB GORM,因为作者并不认为这很重要 因此,不支持$all。备选查询如下所示:
Photo.findAll {
and {
tagList.each { tag ->
eq( 'tags', tag )
}
}
}
您不能使用==,但我没有对此的解释。我想我记得我读过一些关于这本书的东西,但我找不到它,也记不起我在哪里见过它。无论如何,您必须使用eq()方法。我担心您必须使用低级API,我看不出在寻址
$all
中有任何内容。是否有更好的文档显示使用低级API的示例,以及如何将低级API映射到域对象?有没有一个替代的查询,我可以使用它来获得相同的结果,而不使用$all运算符?如果你还没有遇到它,你可以参考。是的,我见过那些糟糕的文档。我想我又是一个人了。