从数组中查找值

时间:2013-08-19 07:25:11

标签: php mongodb

我在MongoDB中有一个名为organization的集合,

organization:{ 
{
   "_id": "520",
   "org_name": "group1",
   "type": "default",
   "zip_codes": {
     "0": {
       "0": "012345",
       "1": "044034"
    }
  }
},


{
   "_id": "521",
   "org_name": "hvbdf",
   "type": "custome",
   "zip_codes": {
     "0": {
       "0": "012345"
    }
  }
}   

}

我想获取type = default和zip_codes = 012345

的总文档

我在尝试此查询,

$cursor = $collect->find(array('type' => 'default','zip_codes'=>array('012345')));

但它不提供输出所以请帮助我,因为我使用的是php和mongodb。

1 个答案:

答案 0 :(得分:1)

正如评论中所提到的,zip_codes字段的架构存在缺陷。比较你拥有的:

"zip_codes": {
    "0": {
        "0": "012345",
        "1": "044034"
    }
}

以下内容:

"zip_codes": [
    "012345",
    "044034"
]

在后一个示例中,zip_codes是一个字符串数组。您的原始示例使用对象,并具有额外的冗余级别的嵌套。与PHP不同,MongoDB的BSON格式没有关联数组的概念 - 只有数组(数字索引从零开始)和对象(哈希映射或键/值对字典)。

Arrays将为您带来multi-key indexing的好处(即索引数组中的所有值),以及利用数组的许多query and update operators。特别是,您可以使用db.collection.find() documentation中描述的语法轻松查询数组字段中的值。如果您修改架构,最后一个链接应该为您构建查询提供足够的指导。