MongoDb SearchQuery问题

时间:2016-02-20 08:26:58

标签: php mongodb

我有一个数据库和一个表用户。当我执行以下代码时,我得到如下输出。

$searchQuery = array('userID' => '2');
$collection = $db->mydatabase->users;
$cursor = $collection->find()->limit(2);
foreach ($cursor as $doc) {
    var_dump($doc);
}

输出:

array(4) {
  '_id' =>
  class MongoId#8 (1) {
    public $$id =>
    string(24) "56c8216d7f8b9a0e148b4567"
  }
  'userID' =>
  int(7)
  'lastTimeOnline' =>
  string(19) "2016-02-20 01:48:53"
  'displayName' =>
  string(0) ""
}
array(4) {
  '_id' =>
  class MongoId#9 (1) {
    public $$id =>
    string(24) "56c8216d7f8b9a0e148b4568"
  }
  'userID' =>
  int(2)
  'lastTimeOnline' =>
  string(19) "2016-02-20 01:48:53"
  'displayName' =>
  string(0) ""
}

现在我只需要找到那些userID为2的记录,所以我改变了下面的代码。

$searchQuery = array('userID' => '2');
$collection = $db->mydatabase->users;
$cursor = $collection->find($searchQuery)->limit(2);
foreach ($cursor as $doc) {
    var_dump($doc);
}

但现在输出为空白: - (

我有两个疑问。 A)为什么获取userId = 2的第二个代码不起作用 B)为什么在两种情况下var_dump($ cursor)都给出了以下输出,为什么不详细说明$ doc

class MongoCursor#5 (0) {
}

2 个答案:

答案 0 :(得分:1)

似乎数据库中的userID保存为Integer,并且您尝试使用字符串参数进行查询,请尝试将查询数组更改为以下内容:

$searchQuery = array('userID' => 2);

答案 1 :(得分:0)

您正在将userId存储为整数,并且在查询中您正在使用字符串,因此您找不到任何内容,而不是像这样编写2 '2'将其写为2