たとえば、BlogPost/Commentsスキーマがここにあるとします。
コメントが5つを超えるすべての投稿を見つけるにはどうすればよいですか?私はの線に沿って何かを試しました
where('comments').size.gte(5)
しかし、私は構文につまずきます
たとえば、BlogPost/Commentsスキーマがここにあるとします。
コメントが5つを超えるすべての投稿を見つけるにはどうすればよいですか?私はの線に沿って何かを試しました
where('comments').size.gte(5)
しかし、私は構文につまずきます
MongoDbは、サイズ演算子( Link )を使用した範囲クエリをサポートしていません。自分でインクリメントするリストのサイズを含めるために、別のフィールドを作成することをお勧めします。
$ sizeを使用してサイズの範囲を検索することはできません(例:複数の要素を持つ配列)。範囲を照会する必要がある場合は、要素を追加するときに増分する追加のサイズフィールドを作成します。
一部のクエリでは、(n)または条件を使用して、必要なすべてのカウントを一覧表示したり、除外したりすることが可能な場合があることに注意してください。
あなたの例では、次のクエリは5つ以上のコメントを持つすべてのドキュメントを提供します(mongooseではなく標準のmongodb構文を使用):
db.col.find({"comments":{"$exists"=>true}, "$nor":[{"comments":{"$size"=>4}}, {"comments":{"$size"=>3}}, {"comments":{"$size"=>2}}, {"comments":{"$size"=>1}}, {"comments":{"$size"=>0}}]})
明らかに、これは非常に反復的であるため、たとえあったとしても、小さな境界に対してのみ意味があります。通常、mongodbのドキュメントで推奨されているように、個別のカウント変数を保持することをお勧めします。
遅いですが、$where句を使用することもできます。
db.Blog.find({$where:"this.comments.length > 5"}).exec(...);