【问题标题】:MongoDB Query DocumentMongoDB查询文档
【发布时间】:2017-05-18 14:23:32
【问题描述】:

我有一个 MongoDB 集合,例如 Given below

{
   "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='Lahore' 的文件。我正在运行以下命令

db.campus.find({"campus_name":"Lahore"}).pretty() 但它什么也没返回。 MondoDB 的版本是 3.4,我正在运行 mongo shell。

有什么建议吗?

提前致谢

【问题讨论】:

  • 试试这个db.campus.find({"LahorePunjab.campus_name":"Lahore"}).pretty()
  • @Yogesh,它不会只搜索campus_name,它会首先尝试在文档中找到LahorePunjab 字段,如果失败,它将简单地忽略campus_name 字段值.

标签: mongodb


【解决方案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()

您首先尝试的是哪个。 :)

【讨论】:

  • 谢谢.....我更改了收藏的格式,现在运行良好
猜你喜欢
  • 2017-01-04
  • 2021-02-25
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多