2017-12-07 12 views
0

私は結果をdetail.type(fetch record where detail.type = "one")に基づいて検索し、取得するだけですdetail.numbers配列の最初の10件のレコード私はmongodbのサブ文書を照会することができません

{ 
      "_id" : ObjectId("5a27b609e101b6092b4ebf91"), 
      "city" : "Mumbai", 
      "detail" : [ 
       { 
        "type" : "One", 
        "name" : "Some name", 
        "_id" : ObjectId("5a27b609e101b6092b4ebf92"), 
        "numbers" : [ 
         "72598xxx78", 
         "81301xxx88", 
         "83302xxx30", 
         "84309xxx43", 
         "85309xxx77", 
         "86309xxx61", 
         "87270xxx88", 
         "85272xxx36", 
         "88272xxx23", 
         "85276xxx01" 
        ] 
       }, 
       { 
        "name" : "Some name", 
        "type" : "two", 
        "_id" : ObjectId("5a28e954d4f5a30527d92a32"), 
        "contact" : [ 
         "72598xxx78", 
         "81301xxx88", 
         "83302xxx30", 
         "84309xxx43", 
         "85309xxx77", 
         "86309xxx61", 
         "87270xxx88", 
         "85272xxx36", 
         "88272xxx23", 
         "85276xxx01" 
        ] 
       }, 
    ] 
    } 
+0

どのようにあなたの検索を照会できますか? –

答えて

0

MongoDBは$ elemMatch演算子を使用して配列要素を上照会が容易になります。

それに対する解決策として、上記の質問に述べたようにMongoDBのコレクションから必要なデータを取得するために、次のMongoDBのクエリを実行してみてください説明によります。

db.collection.find({ 
    detail: { 
     $elemMatch: { 
      type: 'One' 
     } 
    } 
}, { 
    _id: 1, 
    city: 1, 
    'detail.$': 1 
}) 
+0

は、そのタイプ1の1つの配列を与えているが、私はタイプ1の複数のレコードを持つことができます –

0
db.collection.aggregate([ 

{ 
$project:{ 
    detail:{ 
    $map:{ 
    input:{$filter:{input:"$detail",as:"d",cond:{$eq:["$$d.type","One"]}}}, 
    as:"d", 
    in:{ 
    "type" : "$$d.type", 
     "name" : "$$d.name", 
     "numbers":{$slice:["$$d.numbers",10]} 
    } 

    } 

    } 
} 
} 

]) 
関連する問題