[英]Sort by reference document in Doctrine MongoDB ODM
我正在使用DoctrineMongoDBOBundle和Symfony2。
我有一个文档产品,它有一个注释referenceOne到其他文档价格。
我想用queryBuilder获取时按价格排序。
$qb = $dm->createQueryBuilder('MyBundle:Product')
->field('geocoordinates')
->near('lat','lon')
->sort('hasPrice','desc')
但这不起作用。 也许是为了附近的使用?
它取决于Document Price的toString()方法?
问候。
我有一个文档产品,它有一个注释referenceOne到其他文档价格。
MongoDB中没有连接,我不相信Doctrine在这里进行客户端聚合和排序。 因此,无论如何这都行不通。
然而,排序将在$near
命令( http://docs.mongodb.org/manual/reference/operator/near/ )上运行,这是Doctrine在这种情况下应该使用的,在这里你可以看到明确支持$near
通过您正在使用的命令识别: https : //github.com/doctrine/mongodb/commit/59f73cde2c15d171ff39afbf46c1a1339a51048c因此您的问题是链接文档,MongoDB没有JOIN。
在这种情况下, hasPrice
看起来对应于一个方法,可能会检查price
引用是否为null。 在引用ODM查询中的字段时,可以将类属性的名称转换为MongoDB字段名称(如果它们不同),但不支持方法评估。 Sammaye是正确的,Doctrine没有客户端聚合或排序。
作为替代方案,您可以对price.$id
进行排序price.$id
字段,它应该在结果中将不存在的值组合在一起。 同样,您可以使用$ exists运算符来匹配/排除文档是否实际引用。 ODM中的引用(不包括“简单”类型)存储为MongoDBRef实例,它们转换为具有$id
, $ref
和$db
字段的对象。 因此,您可以像文档中的任何其他字段一样查询这些值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.