我正在分片MongoDb設置上運行一個非常基本的腳本來選擇給定日期的消息數量。 然而,運行此多次,導致不一致的結果,有時它返回的數量,有時它只是返回0PHP MongoDB與MongoDate上的查詢不一致的結果
MongoDB服務器具有版本2.4.3
這裏我錯過什麼?
這是腳本:
<?php
$mongo = new MongoClient("mongodb://127.0.0.1:27017");
$db = $mongo->selectDB('database');
$messages = $db->selectCollection('messages');
$date1 = new MongoDate(strtotime('2013-10-20'));
$date2 = new MongoDate(strtotime('2013-10-21'));
var_dump($date1);
var_dump($date2);
$iterator = $messages->find(array('date_replied' => array('$gte' => $date1, '$lt' => $date2)));
$count = $iterator->count();
var_dump($count);
這是結果,2次後對方直接奔:
~$ php -f mongo.php
object(MongoDate)#4 (2) {
["sec"]=>
int(1382220000)
["usec"]=>
int(0)
}
object(MongoDate)#5 (2) {
["sec"]=>
int(1382306400)
["usec"]=>
int(0)
}
int(494921)
~$ php -f mongo.php
object(MongoDate)#4 (2) {
["sec"]=>
int(1382220000)
["usec"]=>
int(0)
}
object(MongoDate)#5 (2) {
["sec"]=>
int(1382306400)
["usec"]=>
int(0)
}
int(0)
您是否將讀取內容定位到次要成員?另外,'database.messages'集合如何分割?如果要單獨連接到碎片,請對每個碎片運行查詢,然後對結果進行總結,是否等於預期的數量? – jmikola