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

MongoDBは、コレクション内のリスト内の各dictを検索します

    確かに $and 演算子は必須ではありません。どちらの形式でも、これは必要なクエリではありません。次のことを考慮してください:

    db.user.find_one({ 'names.firstName': 'alice','names.lastName': 'jones' })
    

    これは実際には 「firstName」が「alice」に等しく、「lastName」の値が「jones」に等しい両方の要素があるため、指定されたレコードに一致します。しかしもちろん、ここでの問題は単純で、配列にはこれらの値の両方のサブドキュメントを持つ実際の要素がありません。

    配列要素に指定された基準の「両方」が含まれる場所を一致させるには、 $elemMatch オペレーター。これにより、クエリ条件が配列の「要素」に適用されます。

    db.user.find_one({ 
        'names': { '$elemMatch': { 'firstName': 'alice','lastName': 'smith' }
    })
    

    そしてもちろん、「alice」と「jones」を試した場合、実際にはその操作を含む要素がないため、一致しません。



    1. Redisを使用したデータ移行

    2. マングースは常に空の配列NodeJSを返します

    3. PyMongo:集計を使用して結果を別のコレクションに保存する方法は?

    4. Heroku上のNodeを使用したJSONの読み取り、書き込み、保存