-1

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

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。

4

1 回答 1

1

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

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

具有以下内容:

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

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

数组将使您受益于多键索引(即索引数组中的所有值)以及许多利用数组的查询和更新运算符。特别是,您可以使用db.collection.find() 文档中描述的语法轻松查询数组字段中的值。如果您修改架构,最后一个链接应该为您构建查询提供足够的指导。

于 2013-08-20T19:49:01.973 回答