2016-04-08 14 views
0

次のように私の問題は、私は、データベースの構造を有する(他の誰かによって設計をし、私は今それに仕事をしなければならない)ということである。MongoDBからネストされたフィールドを抽出するには?

DBS: 
Database 1 
Database 2 
Database 3 
    Collection 1 
    Collection 2 
      field_1 
        field_1_1 
          field_1_1_1 
        field_1_2 
      field_2 
      field_3 
    Collection 3 
    Collection 4 
Database 4 

は今、私はフィールドfield_1_1_1にどのように私の任意のアイデアを抽出したいですそれを照会できますか?

これまでのところ、データベース3.Collection 2.filed_1.field_1_1.field_1_1_1にfind_oneを適用しようとしましたが、明らかに動作しませんでした。

ここで、実際のコンテンツは要求通りになります。これは、データベース "workApp"の下のコレクション "tempStorage"の1つのアイテムがどのように見えるかです。

 {"_id":{"tag":"i4x","org":"Temp","course":"CXV_08","category":"about","name":"overview","revision":null}, 
     "definition": 
      {"data": 
       {"data": 
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
uis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 
onsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 
illum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 
roident, sunt in culpa qui officia deserunt mollit anim id est laborum" 
     } 
    } 
} 

編集:実際のフィールドをアップロード。

コレクション全体をエクスポートして解析しても、データはすでに.4GBであり、それが唯一のオプションであり、より良いものが存在する必要があるとは思われません。

私を助けることができるMongoDBでの経験が豊富な人は誰ですか?

+0

DBを仮想的に表示するのではなく、クエリを確認して結果を確認できるようにフィールドを投稿してください。 –

+0

@HimanshuBhandariコンテンツから実際のフィールドを更新しました。私がRで現在適用している質問は、mongo.find.one(m、ns)です。ここでmはmongodb接続文字列で、ns = "workApp.tempStorage"です。途中で遅い応答をおかけして申し訳ありません。 –

+0

実際の収集のおかげで、私は答えを掲載しました。 –

答えて

0

これを試してみてください:ここで

var data = db.tempStorage.find() 
data[0].definition.data.data 

db.tempStorage.find()が深い文書などに手を差し伸べるためにあなたがインデックス値を渡すと、ドット表記を使用して繰り返すことができ、配列変数data、内のすべての結果が得られます私はdata[0].definition.data.dataで行っています。

コレクション内にドキュメントが1つしかない場合は、findOne()よりも使用することもできます。

var data = db.tempStorage.findOne() 
data.definition.data.data 

HTH!

ありがとうございました。

関連する問題