我有一个数据库和一个表用户。当我执行以下代码时,我得到如下输出。
$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) {
}
答案 0 :(得分:1)
似乎数据库中的userID保存为Integer,并且您尝试使用字符串参数进行查询,请尝试将查询数组更改为以下内容:
$searchQuery = array('userID' => 2);
答案 1 :(得分:0)
您正在将userId存储为整数,并且在查询中您正在使用字符串,因此您找不到任何内容,而不是像这样编写2 '2'
将其写为2