配列フィールドが空ではないMongoDBレコードの検索
私のすべてのレコードには、"pictures"というフィールドがあります。このフィールドは文字列の配列です。
私は今、この配列が空ではない最新の10件のレコードを求めています。
いろいろ調べてみたのですが、不思議なことにあまり見つかりませんでした。 WHEREという選択肢もあるようですが、ネイティブ関数に比べてどれだけ時間がかかるのか、もっと良い解決策はないのかと思っています。
それにしたって、うまくいきません。
ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind()
何も返ってきません。this.pictures` に長さのビットを入れないでおくとうまくいきますが、当然ながら空のレコードも返します。
440
3
また、キーがないドキュメントがある場合は
MongoDBは$sizeが関係する場合はインデックスを使わないので、ここではより良い解決策を示します。
MongoDB 2.6 リリース以降、演算子
$gt
で比較できるようになりましたが、予想外の結果になる可能性があります (詳細な説明は この回答 にあります)。さらに、特にmongodbのドキュメントを見て、いくつかのパーツを組み合わせてみたところ、これが答えでした。
これも、あなたのためになるかもしれません。