在mongodb

时间:2016-02-07 04:33:51

标签: php mongodb

我使用php创建了一个mongoDB集合: -

$document = array(
         'id' => 5,
         'UNAME' => 'abc',
         'NAME' => 'def',
         'EMAIL' => 'def@gmail.com',
         'QUALIFICATION' => array(
                     'DEGREE' => '',
                     'UNIVERSITY' => ''
                    ),
         'POST' => array(
             ),
        );
$collection->insert($document);

我有这个mongodb集合: -

{
"_id" : "5",
"UNAME" : "abc",
"NAME" : "def",
"EMAIL" : "def@gmail.com",
"QUALIFICATION" : {
    "DEGREE" : "",
    "UNIVERSITY" : ""
},
"POST" : [ ]
}
{
"_id" : "2",
"UNAME" : "uvw",
"NAME" : "xyz",
"EMAIL" : "xyz@gmail.com",
"QUALIFICATION" : {
    "DEGREE" : "",
    "UNIVERSITY" : ""
},
"POST" : [ ]
}

我将查询用作$cursor = $collection->find(array('UNAME'=>'uvw'));

$extract = iterator_to_array($cursor);

现在问题出在这里。 要使用UNAME = uvw检索文档,我强制使用

$u = $extract[2]['UNAME'];

相反,如果我使用$u = $extract['UNAME']; 它显示错误为Notice: Undefined index: UNAME

我有没有办法在不使用' index'(我猜这是正确的词)的情况下获取这些数据?

1 个答案:

答案 0 :(得分:0)

首先,由于您的查询是UNAME,为什么必须在回复中搜索UNAME?在uvw的所有回复中,Array ( [2] => Array ( [_id] => 2 [UNAME] => uvw [NAME] => xyz [EMAIL] => xyz@gmail.com [QUALIFICATION] => Array ( [DEGREE] => [UNIVERSITY] => ) [POST] => Array ( ) ) ) 的值是不是很明显?

第二件事是iterator_to_array将返回包含数组中所有文档的数组,其中每个文档的键将是_id的值。 所以在你的情况下,响应将是

UNAME

因此,您必须使用$extract[2]['UNAME'];

找到use_keys

但是,您可以通过将值use_keys传递给FALSE来更改此行为,其中$extract = iterator_to_array($cursor, FALSE)指示是否将迭代器元素键用作索引。

所以,Array ( [0] => Array ( [_id] => 2 [UNAME] => uvw [NAME] => xyz [EMAIL] => xyz@gmail.com [QUALIFICATION] => Array ( [DEGREE] => [UNIVERSITY] => ) [POST] => Array ( ) ) )

将返回索引从0开始的数组,如下所示。

UNAME

所以,现在您可以使用$extract[0]['UNAME'];

找到SELECT id, name FROM robots WHERE name LIKE '%robot 20%' ORDER BY id

希望这有帮助。