繁体   English   中英

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

[英]search a particular key in mongodb collection using php

我有这个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搜索PHONE 问题是我尝试过的所有代码都取出一个文档,然后我必须自己从文档中取出密钥PHONE

我的尝试是:-

$cursor=$collection->find(array('_id'=>'3'),array('SETTINGS'=>array('PRIVACY'=>array('CONTACT_INFO'=>array('PHONE')))));

foreach ($cursor as $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))

此代码将为您提供电话等于0的文档

要只退回电话,您必须使用投影

$db->$collection->find(array('SETTINGS.PRIVACY.CONTACT_INFO.PHONE' => 0), array('_id' => 0, 'SETTINGS.PRIVACY.CONTACT_INFO.PHONE' => 1))

编辑:根据您的问题的版本,您缺少点符号

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM