Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB+;Grails:如何使用Grails中的$all操作符_Mongodb_Grails_Gorm Mongodb - Fatal编程技术网

MongoDB+;Grails:如何使用Grails中的$all操作符

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吗?

我在一个对象上有一系列标记,我想查询包含作为数组传递的所有标记的对象。我知道在MongoDB中,in和inList中的运算符转换为$in运算符,但是$in将返回至少包含一个提供的标记的任何对象。我想要包含所有提供的标记的对象。或者说另一种方式$in表示带有t1、t2或t3等的findAll标记。我想要带有t1、t2和t3等的findAll标记。Mongodb为此幸运地支持$all操作符

那么,如何从Grail的GormMongoDB插件执行一个使用$all运算符的查询呢?我必须使用低级API吗?如果是这样,我如何让低级API返回完全填充的域对象


或者有没有比使用$all操作符更好的查询选项,它具有更好的性能,让我停留在GORM的标准查询范围内?

好的,我觉得我差不多每隔两周就这样做一次,但我现在开始记录MongoDB GORM,因为作者并不认为这很重要

因此,不支持$all。备选查询如下所示:

Photo.findAll {
    and {
       tagList.each { tag ->
          eq( 'tags', tag )
       }
    }
}

您不能使用==,但我没有对此的解释。我想我记得我读过一些关于这本书的东西,但我找不到它,也记不起我在哪里见过它。无论如何,您必须使用eq()方法。

我担心您必须使用低级API,我看不出在寻址
$all
中有任何内容。是否有更好的文档显示使用低级API的示例,以及如何将低级API映射到域对象?有没有一个替代的查询,我可以使用它来获得相同的结果,而不使用$all运算符?如果你还没有遇到它,你可以参考。是的,我见过那些糟糕的文档。我想我又是一个人了。