我在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。
答案 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中描述的语法轻松查询数组字段中的值。如果您修改架构,最后一个链接应该为您构建查询提供足够的指导。