sql >> データベース >  >> NoSQL >> MongoDB

配列フィールドが空でないMongoDBレコードを検索します

    キーがないドキュメントもある場合は、次を使用できます:

    ME.find({ pictures: { $exists: true, $not: {$size: 0} } })
    

    $ sizeが関係している場合、MongoDBはインデックスを使用しないため、より良い解決策は次のとおりです。

    ME.find({ pictures: { $exists: true, $ne: [] } })
    

    プロパティに無効な値が含まれる可能性がある場合(nullなど) boolean またはその他)、$typesを使用してチェックを追加します この回答で提案されているように:

    mongo> =3.2の場合:

    ME.find({ pictures: { $exists: true, $type: 'array', $ne: [] } })
    

    モンゴ<3.2:

    ME.find({ pictures: { $exists: true, $type: 4, $ne: [] } })
    

    MongoDB 2.6リリース以降、演算子$gtと比較できます。 しかし、予期しない結果につながる可能性があります(この回答で詳細な説明を見つけることができます):

    ME.find({ pictures: { $gt: [] } })
    


    1. Rails、Sidekiq-Redis NOAUTH

    2. mongodbデータベースが存在するかどうかを確認しますか?

    3. 高速書き込みの一時的な行ストレージソリューションのためのMongoDB対Redis対Cassandra

    4. MongoDBの「$pullAllには配列引数が必要ですが、doubleが指定されていました」を修正しました