簡體   English   中英

Doctrine + MongoDB - 如何查詢數組非空的文檔

[英]Doctrine+MongoDB - How to query for documents with array that's not empty

我想收到大小大於零的數組“贊”的所有文件。 我看到了一個使用 - > size()方法獲取特定大小的數組的示例:

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

但是要獲得大小不等於零的數組,是否有選項可以做到這一點?

謝謝!

您可以將特定正整數傳遞給size ,但不能使用它來查詢范圍。 這不是Doctrine的限制,而是MongoDB的限制。 $ size的文檔說:

$ size不接受值范圍。 要根據具有不同數量的元素的字段選擇文檔,請創建一個計數器字段,在向元素添加元素時將其遞增。

為此,請向Article添加$comments_count @Int字段,並將其更新為a)修改$comments的文檔方法或b)在使用@PreUpdate注釋的文檔方法中。

另一個(低效)選項是使用where用JavaScript表達式:

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

使用JavaScript非常慢。 你應該更喜歡“純”的QueryBuilder:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM