5

我想接收大小大于零的数组“喜欢”的所有文档。我看到了一个使用 ->size() 方法获取特定大小的数组的示例:

$qb = $dm->createQueryBuilder('Article')->field('comments')->size(0);

但不要得到一个大小不为零的数组,有没有办法做到这一点?

谢谢!

4

2 回答 2

3

您可以将特定的正整数传递给size,但不能使用它来查询范围。这不是 Doctrine 的限制,而是 MongoDB 的限制。$size上的文档说:

$size 不接受值范围。要根据具有不同数量元素的字段选择文档,请创建一个计数器字段,当您将元素添加到字段时会增加该字段。

为此,请$comments_count @Int向文章添加一个字段并更新它 a) 在修改的文档方法中$comments或 b) 在带有注释的文档方法中@PreUpdate

另一个(低效)选项是使用wherejavascript 表达式:

$where = "function() { return this.comments && this.comments.length > 0; }";
$qb = $dm->createQueryBuilder('Article')->field('comments')->where($where);
于 2013-12-16T23:56:52.130 回答
1

为此使用 JavaScript 真的很慢。您应该更喜欢“纯”QueryBuilder:

$qb = $dm->createQueryBuilder('Article');
$qb = $qb->field('comments')
         ->exists(true)
         ->not($qb->expr()->size(0));
于 2015-08-26T15:07:14.090 回答