2017-01-20 17 views
0

オブジェクトの配列または多くのフィールドを持つオブジェクトと一致するすべてのドキュメントを取得する必要があります。Mongodbクエリ配列

例1(オブジェクトの配列) 文書は、文書が一致した場合、彼はあまりにもpostal_codesの1

var locations = [ 
    { 
    country_code : 'IT', 
    postal_codes : [21052, 21053, 21054, 21055] 
    }, 
    { 
    country_code : 'GER', 
    postal_codes : [41052, 41053, 41054, 41055] 
    } 
] 

例2(フィールドを持つオブジェクト) を持っている必要がありますよりも、COUNTRY_CODEと一致した場合キーの値の1つを持つ必要があります

var location = { 
    'IT' : [21052, 21053, 21054, 21055], 
    'GER' : [41052, 41053, 41054, 41055] 
} 

私は一致する最初のタイプのドキュメントが好きです(arオブジェクトのレイ)、どのように私は一致するすべてのドキュメントを取得するために使用できますか?

このような構造を持っている見つけるためのドキュメント:

{ 
    "_id" : ObjectId("587f6f57ed6b9df409db7370"), 
    "description" : "Test description", 
    "address" : { 
     "postal_code" : "21052", 
     "country_code" : "IT" 
    } 
} 

答えて

0

あなたは、このようなコレクションを見つけるために$inを使用することができます。

db.collection_name.find(
        { address.postal_code: { $in: [your values] } }, 
        ) 

これをチェックすると、子オブジェクトを照会するためにlinkがチェックされます。 これをチェックするmongoDBのlink$in

+0

結果を得るために必要に応じて複数の条件を追加できます。 –

0

1つの方法は、$orオペレータを使用することです。これにより、country_codepostal_codeの組み合わせが制限されます。

クエリは次のようになります。

db.locations.find({ 
    $or: [{ 
     "country_code": "IT", 
     "postal_code": { 
      $in: [21052, 21053, 21054, 21055] 
     } 
    }, { 
     "country_code": "GER", 
     "postal_code": { 
      $in: [41052, 41053, 41054, 41055] 
     } 
    }] 
}) 
関連する問題