2017-05-18 119 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

谢谢.....我改变了我收藏的格式,现在运行良好 –