2017-05-18 118 views
0

我有一個MongoDB的集合,如下面給出的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 =「拉合爾」。我運行以下命令:

db.campus.find({「campus_name」:「Lahore」})。pretty()但它不返回任何內容。 MondoDB的版本是3.4,我正在運行mongo shell。

有什麼建議嗎?

由於提前

+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

謝謝.....我改變了我收藏的格式,現在運行良好 –