2017-08-21 11 views
0

のすべてのサブキー内の検索私は、このドキュメントのMongoDBオブジェクトのMongoDB

{ 
    "name": "test2", 
    "_id": "1502609098801598ffeca615f5d3dd09087c6", 
    "events": { 
     "0": { 
      "delay": "0", 
      "actionid": "2" 
     }, 
     "1": { 
      "delay": "0", 
      "actionid": "3" 
     } 
    } 
} 

に私はこれらのようなものを試してみましたが、私は

欲しいものを見つけることができません特定たAction でイベントを含む文書を検索したいしていますしてください
db.mycollection.find({ "events.$.actionid":"2" }) 
db.mycollection.find({ "events.$**.actionid":"2" }) 
db.mycollection.find({ "events.$": { $elemMatch: { "actionid":"2"} }) 

注意:私は、文書の構造とMongoDBのバージョンを変更することはできません。我々はMongoDBの中に集約機能の使用を取り、01可能3.0.6

答えて

0

ですこの後object to an array

db.test.aggregate([ { "$project" : { "events" : { "$objectToArray" : "$events" } } } ]) 

は、私たちは、次の$match

db.test.aggregate([ 
    { "$project": 
     { "events": {"$objectToArray": "$events"} } }, 
    { "$match": 
     { "events.v.actionid" : "2" } } ]) 

この意志の出力をフィルタリング通常の配列を使用することができますので、あなたが投影する場合があります

{ 
     "_id" : "1502609098801598ffeca615f5d3dd09087c6", 
     "events" : [ 
       { 
         "k" : "0", 
         "v" : { 
           "delay" : "0", 
           "actionid" : "2" 
         } 
       }, 
       { 
         "k" : "1", 
         "v" : { 
           "delay" : "0", 
           "actionid" : "3" 
         } 
       } 
     ] 
} 
> 

文書をその構造に戻す

+0

私はこれを見るエラー "errmsg": "例外:無効な演算子 '$ objectToArray'" – user298582

+0

実行中のmongodbのバージョンは?あなたは> = 3.4.4必要です。 –

+0

私はmongodb 3.0.6を持っています – user298582

関連する問題