使用php搜索mongodb集合中的特定键

使用php搜索mongodb集合中的特定键,php,mongodb,search,Php,Mongodb,Search,我有这个mongodb系列 { "_id" : "3", "SETTINGS" : { "PRIVACY" : { "ALLOW_SUGGESTIONS" : NumberLong(1), "BIRTHDAY" : NumberLong(0), "CONTACT_INFO" : { "PHONE" : NumberLong(0), "ADDRESS" : NumberLong(0)

我有这个mongodb系列

{
"_id" : "3",
"SETTINGS" : {
    "PRIVACY" : {
        "ALLOW_SUGGESTIONS" : NumberLong(1),
        "BIRTHDAY" : NumberLong(0),
        "CONTACT_INFO" : {
            "PHONE" : NumberLong(0),
            "ADDRESS" : NumberLong(0)
        },
        "SEARCH_ENGINE" : NumberLong(0)
    }
}
我试着用php搜索
手机
。问题是,我尝试过的所有代码都会取出一个文档,然后我必须自己从文档中取出钥匙
电话

我的尝试是:-

$cursor=$collection->find(array('_id'=>'3'),array('SETTINGS'=>array('PRIVACY'=>array('CONTACT_INFO'=>array('PHONE')))));
foreach($cursor作为$document)
{
echo var_dump($document);
}

它给了我输出:-

Fatal error: Uncaught exception 'MongoCursorException' with message 'localhost:27017: Can't canonicalize query: BadValue Unsupported projection option: SETTINGS: { PRIVACY: { CONTACT_INFO: [ "PHONE" ] } }' in /var/www/html/ProjectTest/include/Profile Helper.php:114 Stack trace: #0 /var/www/html/ProjectTest/include/Profile Helper.php(114): MongoCursor->rewind() #1 /var/www/html/ProjectTest/profile.php(14): Profile->GetProfileInfo() #2 {main} thrown in /var/www/html/ProjectTest/include/Profile Helper.php on line 114
总结我的问题:-
  • 有没有一种方法可以搜索这个特定的键而不是整个文档
  • 如果是,那么考虑到在大型数据库中的性能或搜索速度,哪种方法会更好

如果您提供了一个代码示例,说明您想要什么样的输出,以及您尝试了什么样的代码,那么就更容易了。您可以尝试:

$db->$collection->find(array('SETTINGS.PRIVACY.CONTACT_INFO.PHONE' => 0))
此代码将使用phone equal
0

要仅返回电话,您必须使用:


编辑:根据您的问题版本,如果您提供所需输出的代码示例以及所尝试输出的代码,您将更容易获得。您可以尝试:

$db->$collection->find(array('SETTINGS.PRIVACY.CONTACT_INFO.PHONE' => 0))
此代码将使用phone equal
0

要仅返回电话,您必须使用:


编辑:根据您问题的版本,如果您编辑您的问题以显示您的尝试,则会更好。@chridam我只找到了提取特定文档的方法,而没有提取嵌套在文档深处的
键。所以,我这样做的尝试是相当蹩脚的,先生。你能建议一个解决方法吗?如果你编辑你的问题以显示你的尝试,那会更好。@chridam我只找到了提取特定文档的方法,而没有提取嵌套在文档深处的
键。所以,我这样做的尝试是相当蹩脚的,先生。你能建议一条出路吗?那正是我要找的。现在它适合我了。这就是我一直在寻找的东西。现在它对我有用了。