2017-05-18 12 views
0

私は、このようなMongoDBのクエリ文書

{ 
    "IslamabadICT": { 
     "campus_name": "Islamabad", 
     "campus_province": "ICT" 
    }, 
    "KarachiSindh": { 
     "campus_name": "Karachi", 
     "campus_province": "Sindh" 
    }, 
    "LahorePunjab": { 
     "campus_name": "Lahore", 
     "campus_province": "Punjab" 
    }, 
    "PeshawarKPK": { 
     "campus_name": "Peshawar", 
     "campus_province": "KPK" 
    } 
} 

下記のと私はcampus_name =「ラホール」すべての文書を照会するようMongoDBのコレクションを持っています。私は次のコマンドを実行しています。

db.campus.find({"campus_name": "Lahore"})。 MondoDBのバージョンは3.4です。mongoシェルを実行しています。

提案がありますか?ここアドバンス

+0

この 'db.campus.find({" LahorePunjab.campus_name ":" Lahore "})。pretty()' – Yogesh

+0

@ Yogeshは、 'campus_name'だけを検索しません。ドキュメント内の 'LahorePunjab'フィールドを探します。失敗した場合、単に' campus_name'フィールド値を無視します。 –

答えて

1

おかげでcampus_name='Lahore'文書を返しますクエリです - これ以外から

db.campus.find().map(function(myDoc) { 
    for (var key in myDoc) { 
    if(key != "_id" && myDoc[key].campus_name == "Lahore"){ 
     print("Found it!!"); 
     return myDoc; 
    } 
    } 
    return null; 
}).find(function(doc){if(doc!=null) return doc;}); 

を、私は非常にあなたのドキュメントフォーマットを再構築するためにあなたをお勧めします。一つの例は、次のように文書を再構築することができ -

{ 
    { 
     "main": "IslamabadICT", 
     "campus_name": "Islamabad", 
     "campus_province": "ICT" 
    }, 
    { 
     "main": "KarachiSindh", 
     "campus_name": "Karachi", 
     "campus_province": "Sindh" 
    }, 
    { 
     "main": "LahorePunjab", 
     "campus_name": "Lahore", 
     "campus_province": "Punjab" 
    }, 
    { 
     "main": "PeshawarKPK", 
     "campus_name": "Peshawar", 
     "campus_province": "KPK" 
    } 
} 

それは、クエリは非常に簡単になります - あなたが最初の場所にしようとしたものです

db.sht.find({campus_name:"Lahore"}).pretty() 

を。 :)

+0

ありがとうございました.....私のコレクションのフォーマットを変更しました。今はうまくいきます –

関連する問題