PHP MongoDB 与 MongoDate 上的查询结果不一致

标签 php mongodb

我在分片 MongoDb 设置上运行一个非常基本的脚本来选择给定日期的消息数量。 但是,多次运行此命令会导致结果不一致,有时返回数字,有时只返回 0。

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)

最佳答案

您的数据库可能已损坏。你能做一个 db.repairDatabase() 然后再试一次吗?如果尝试重新创建索引失败,我在分布式集合中遇到了类似的问题。

请记住,修复将阻止整个数据库操作,并可能丢弃任何损坏的数据。小心行事!

关于PHP MongoDB 与 MongoDate 上的查询结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362961/

相关文章:

php - 无法使用 php7 和 symfony 3 加载 mongodb fixtures

javascript - MongoDB Compass 过滤器不以以下开头

php - 按前缀在数据库表中搜索字符串

phpinfo 报告不正确的 pcre 版本

php - mySQL:为双选择查询分配自动递增ID号

php - 将数据从 Laravel 传递到 Bootstrap 模式

php - 在 smarty 模板文件中包含 PHP 文件

javascript - Node.js - 从域模型中抽象 Mongoose 模型

node.js - 'db.collection' 与 'new mongo.Collection' 之间的区别

node.js - 需要 Mongoose.js 上的几个列之一