如何在MongoDB中按值查询

如何在MongoDB中按值查询,mongodb,mongodb-php,Mongodb,Mongodb Php,我的收藏看起来像: { "_id" : ObjectId("520c8976586f12c80900301d"), "IDENTITY" : "ae4ff1546ecfe6ce6e8ebb2d870d57fb", "NAME" : "Winmain Yao", "TYPE" : "COMPANY", "PUBLIC" : 1, "BACKGROUND" : null, "CONTACT" : { "PHONE" : { "WORK" : "18630283895", "HOM

我的收藏看起来像:

{
"_id" : ObjectId("520c8976586f12c80900301d"),
"IDENTITY" : "ae4ff1546ecfe6ce6e8ebb2d870d57fb",
"NAME" : "Winmain Yao",
"TYPE" : "COMPANY",
"PUBLIC" : 1,
"BACKGROUND" : null,
"CONTACT" : {
  "PHONE" : {
    "WORK" : "18630283895",
    "HOME" : "188837283"
},
"EMAIL" : {
  "DEFAULT00001" : "zxwinmain@gmail.com"
},
"IM" : [],
"SITE" : [],
"ADDRESS" : [],
"SOCIAL" : []
},
"RELATION" : {
  "ACCOUNT" : "16713a29767fa4e8f139dfb249900c07",
  "USER" : "84a9e7a8e5f3a13d411cfa8ff4a62a50"
},
"CREATED" : 1376553334,
"UPDATED" : 0,
"DELETED" : 0
}
现在我想找到客户的电话号码=18630283895,我该怎么做

非常感谢。

以下内容:

"PHONE" : {
    "WORK" : "18630283895",
    "HOME" : "188837283"
},
方法是否错误。由于您总是会有更多类型的电话号码,因此最终会得到一个“实际上是一个值的键”。这使得查询(和索引)变得困难。更好的方法是:

"PHONE" : [
    { type: "WORK", number: "18630283895" },
    { type: "HOME", number: "188837283" },
],
然后,您可以非常轻松地使用以下内容为其编制索引:

db.collection.ensureIndex( { "PHONE.number": 1 } );
并通过以下方式查询号码:

db.collection.find( { "PHONE.number" : "18630283895" } );

这类问题已经被讨论过很多次了,请在发布之前在谷歌上搜索一下:
$db->collection->find(数组('$or'=>array(数组('CONTACT.PHONE.WORK'=>18630283895),array('CONTACT.PHONE.HOME'=>18630283895))
这一次hi@Sammaye,很抱歉问题不太清楚,电话号码有多种类型,我想搜索值=18630283895,无论它的类型是工作还是家庭或其他。您在这里选择了错误的模式,您需要一个配对数组,如下所示:
phone:[{name:'home',number:186707076},{name:'work',number:59569696}]
这样,您只需查询
电话号码
,它就会选择all@Sammaye谢谢!