Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Mongo php查询Meteor.users()_Php_Mongodb_Meteor - Fatal编程技术网

通过Mongo php查询Meteor.users()

通过Mongo php查询Meteor.users(),php,mongodb,meteor,Php,Mongodb,Meteor,我试图用php查询Meteor.users()集合。到目前为止,我能够通过使用电子邮件地址获得用户ID。现在我想将密码添加到查询中,但无法正确构造查询 以下是我到目前为止的情况: try { $mongoDb = $mongoConn->xxxxxxxx; $collection = $mongoDb->users; //$userQuery = array('emails.address' => $user, "services" => arra

我试图用php查询Meteor.users()集合。到目前为止,我能够通过使用电子邮件地址获得用户ID。现在我想将密码添加到查询中,但无法正确构造查询

以下是我到目前为止的情况:

try {
    $mongoDb = $mongoConn->xxxxxxxx;
    $collection = $mongoDb->users;
    //$userQuery = array('emails.address' => $user, "services" => array ( "password" =>  array( "bcrypt"  => $pass )));
    $userQuery = array('emails.address' => $user);
    $arr = $collection->findOne($userQuery);
} catch (MongoException $e) {
    die('Error: ' . $e->getMessage());
}
$id = $arr[_id];
以下是如何在Mongo中设置密码部分:

"services" : {
    "password" : {
      "bcrypt" : "$2a$10$lYaK1PDTmRTvpddOX5R08Ooupdczktve/qgUMhFvwKfvpPUk3kEH2"
  } 
},
"emails" : [{
  "address" : "demo@demo.com",
  "verified" : false
}]
我已经尝试了
services=>password=>bcrypt
的点表示法和括号表示法的不同组合,但到目前为止我还没能做到这一点。关于如何查询该部分有什么想法吗?

语法与您在文档中对数组元素所做的完全相同。因此:

    $userQuery = array(
       'emails.address' => $user,
       'services.password.bcrypt' => $pass
    );
也就是说,您以前的尝试:

"services" => array ( "password" =>  array( "bcrypt"  => $pass ))
应该可以工作,但需要注意的是,文档中的对象“必须与所表示的结构完全匹配”,并且不存在其他“子键”,因为这是您要求查询引擎要求的

您可能面临的另一个问题是,如果您使用“纯文本”密码作为输入,则生成的加密字符串与存储的字符串不匹配


在后一种情况下,您需要测试加密生成,以找到使用与存储数据所用加密哈希完全相同的加密哈希的方法。但这与用于“查询”数据的语法完全不同。

我首先尝试了点符号,但没有成功。我将$pass设置为与加密密码完全匹配。这是我仅使用电子邮件地址时打印的一部分<代码>[services]=>Array([password]=>Array([bcrypt]=>$2a$1…)@LeojPyzynski也很受欢迎。你的“问题”是关于“查询”,你的“问题”似乎是关于错配的数据。所示的查询语法适用于世界其他地方。任何其他问题都是您的问题,或者完全是另一个问题。我将尝试将密码字符串更改为纯文本,看看会发生什么。@LeojPyzynski这是个好主意。它确实有助于调试。