Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Php 同一密钥上的Mongodb多个或多个条件_Php_Mongodb_Mongodb Query - Fatal编程技术网

Php 同一密钥上的Mongodb多个或多个条件

Php 同一密钥上的Mongodb多个或多个条件,php,mongodb,mongodb-query,Php,Mongodb,Mongodb Query,在我的MongoDb中,我的收藏中包含以下文档: array ( '_id' => new MongoId("561f925017e74f6a08012c65"), 'timestamp' => new MongoDate(1444877100, 0), 'value' => 0, ) 当然,所有文档都有自己的时间戳 如何找到时间戳上有多个OR条件的文档? 例如,查找时间戳介于1444877100和1444877105之间或时间戳介于1444877120和1444

在我的MongoDb中,我的收藏中包含以下文档:

array (
  '_id' => new MongoId("561f925017e74f6a08012c65"),
  'timestamp' => new MongoDate(1444877100, 0),
  'value' => 0,
)
当然,所有文档都有自己的时间戳

如何找到时间戳上有多个OR条件的文档? 例如,查找时间戳介于1444877100和1444877105之间或时间戳介于1444877120和1444877150之间的所有记录

例如,在Mysql中,它应该是:

WHERE (
  (timestamp >= 144877100 AND timestamp <= 1444877105) OR
  (timestamp >= 1444877120 AND timestamp <= 1444877150)
)
在哪里(
(时间戳>=144877100和时间戳=1444877120和时间戳您尝试过:


{$or:[{timestamp:{$lte:someValue,$gte:someValue2}},{timestamp:{$lte:someValue3,$gte:someValue4}]}

您需要的是对两个或多个表达式执行逻辑操作的运算符。当然,和分别选择字段值大于或等于(即>=)指定值且小于或等于的文档(即,您是在MongoDB shell中运行查询,还是通过驱动程序运行查询?——您想用哪种语言解决这个问题?
$result = $collection->find(['$or' => [ 
    ['timestamp' => ['$gte' => new MongoDate(1444877100), '$lte' => new MongoDate(1444877105)]], 
    ['timestamp' => ['$gte' => new MongoDate(1444877120), '$lte' => new MongoDate(1444877150)]]
]]);
foreach ( $result as $doc ) { /* dosomething(); */ }