gpt4 book ai didi

php - Doctrine+MongoDB - 如何查询数组不为空的文档

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:14 25 4
gpt4 key购买 nike

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

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

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

谢谢!

最佳答案

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

$size does not accept ranges of values. To select documents based on fields with different numbers of elements, create a counter field that you increment when you add elements to a field.

为此,将 $comments_count @Int 字段添加到 Article 并更新它 a) 在修改 $comments 的文档方法中或 b) 在用 @PreUpdate 注释的文档方法中。

另一个(低效的)选项是将 where 与 javascript 表达式一起使用:

$where = "function() { return this.comments && this.comments.length > 0; }";
$qb = $dm->createQueryBuilder('Article')->field('comments')->where($where);

关于php - Doctrine+MongoDB - 如何查询数组不为空的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com