5

サイズがゼロより大きい配列「いいね」を持つすべてのドキュメントを受け取りたいと思います。->size() メソッドを使用して特定のサイズの配列を取得する例を見ました。

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

ゼロ以外のサイズの配列を取得しないようにするためのオプションはありますか?

ありがとうございました!

4

2 に答える 2

3

特定の正の整数を に渡すことはできsizeますが、それを使用して範囲を照会することはできません。これは Doctrine の制限ではなく、MongoDB の制限です。$sizeのドキュメントには次のように書かれています。

$size は値の範囲を受け入れません。要素数が異なるフィールドに基づいてドキュメントを選択するには、フィールドに要素を追加するときにインクリメントするカウンタ フィールドを作成します。

これを行うには、$comments_count @IntArticle にフィールドを追加し、a) 変更するドキュメント メソッド内、$commentsまたは b) で注釈が付けられたドキュメント メソッド内のいずれかでフィールドを更新します@PreUpdate

別の (非効率的な) オプションはwhere、javascript 式で使用することです。

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