0

これは、2 つの json ファイルを持つ単一のコレクションです。特定のフィールドを検索しています: オブジェクトの値と、一致する場合はサブ ドキュメント全体を返す必要があります (コレクションの特定のサブ ドキュメントは、次のコレクションの 2 つのサブ ドキュメントから返される必要があります)。前もって感謝します。

{
"clinical_study": {
"@rank": "379",
"#comment": [],
"required_header": {
  "download_date": "ClinicalTrials.gov processed this data on March 18, 2015",
  "link_text": "Link to the current ClinicalTrials.gov record.",
  "url": "http://clinicaltrials.gov/show/NCT00000738"
},
"id_info": {
  "org_study_id": "ACTG 162",
  "secondary_id": "11137",
  "nct_id": "NCT00000738"
},
"brief_title": "Randomized, Double-Blind, Placebo-Controlled Trial of Nimodipine for the Neurological Manifestations of HIV-1",
"official_title": "Randomized, Double-Blind, Placebo-Controlled Trial of Nimodipine for the Neurological Manifestations of HIV-1",
}

{
"clinical_study": {
"@rank": "381",
"#comment": [],
"required_header": {
  "download_date": "ClinicalTrials.gov processed this data on March 18, 2015",
  "link_text": "Link to the current ClinicalTrials.gov record.",
  "url": "http://clinicaltrials.gov/show/NCT00001292"
},
"id_info": {
  "org_study_id": "920106",
  "secondary_id": "92-C-0106",
  "nct_id": "NCT00001292"
},
"brief_title": "Study of Scaling Disorders and Other Inherited Skin Diseases",
"official_title": "Clinical and Genetic Studies of the Scaling Disorders and Other Selected Genodermatoses",
}
4

1 に答える 1

0

サンプル ドキュメントの形式が正しくありません。現在、両方のclinical_studyキーが同じオブジェクトの一部であり、そのオブジェクトには終了がありません}。サブドキュメントと呼んでいますが、それらを 2 つの別個のドキュメントにしたいと考えています。両方が同じキーで名前が付けられている場合、それらをドキュメントのサブドキュメントにすることは意味がありません。その方法でドキュメントを保存することはできません。mongo シェルでは、キーの最初のインスタンスが 2 番目のインスタンスに暗黙のうちに置き換えられます。

> var x = { "a" : 1, "a" : 2 }
> x
{ "a" : 2 }

clinical_studyon に一致するときにドキュメントの一部を返したいだけの場合はclinical_study.@rank、射影を使用します。

db.test.find({ "clinical_study.@rank" : "379" }, { "clinical_study" : 1, "_id" : 0 })

代わりに、clinical_studyドキュメントがより大きなドキュメント内の配列の要素になることを意図している場合は、を使用します$。これは、非ドキュメントclinical_studyのキーの 2 つの値を要素として持つ配列フィールドの名前です。clinical_study

db.test.find({ "clinical_study.@rank" : "379" }, { "_id" : 0, "clinical_study.$" : 1 })
于 2015-04-06T16:02:22.993 に答える