MongoDB查询从多个嵌套的json文件中查找值

时间:2015-04-19 06:52:43

标签: arrays json mongodb nested mongodb-query

我有500个以下格式的json文件(格式相同。只是不同的数据)。我只需要所有这些文件中的城市名称。任何人都可以帮我查询。

示例:从以下文件中,我需要输出为San Diego,Newnan,Louisville。

{
"clinical_study":{
 "location": [
  {
    "facility": {
      "address": {
        "city": "San Diego",
        "country": "United States"
      }
    }
  },
  {
    "facility": {
      "address": {
        "city": "Newnan",
        "country": "United States"
      }
    }
  },
  {
    "facility": {
      "address": {
        "city": "Louisville",
        "country": "United States"
      }
    }
  }
]
}
}

2 个答案:

答案 0 :(得分:0)

我对MongoDB有点新鲜,但听起来你不需要查询城市名称。听起来你已经在查询位置列表了,所以你需要做的只是一个循环来从每个返回的位置获取城市。

这样的事情:

// Assume here that clinical is the object in your question
var locations = clinical.clinical_study.locations;
var cityList = [];

for (var i = 0; i < locations.length ; i++ ) {
    cityList[i] = locations.facility.address.city;
}

这至少是一种天真的做法。我不知道你怎么能在db查询中做到这一点(我熟悉Mongoose的快速模块,我认为不允许这样做。如果我错了,请纠正我。)

答案 1 :(得分:0)

目前还不清楚你想要什么。但无论我理解什么,你只想要来自给定样品采集结构的城市名称。您只需使用Mongo Aggregation

即可

以下是获取城市的问题:

db.collectionName.aggregate({
      $unwind: "$clinical_study.location"
    }, {
    $project: {
      "_id": 0,
      city: '$clinical_study.location.facility.address.city'
    }
})