我试图在MongoDB\驱动程序\查询中使用选项:
$options = array();
...
if (isset($limit['page']))
{$options['skip']=($limit['page'] - 1) * $limit['hpp'];}//20
if (isset($limit['hpp']))
{$options['limit']=$limit['hpp'];//20
$options['batchSize']=$limit['hpp'];}//20
print('<br />--------$options :<br />');
print_r($options);
$query = new MongoDB\Driver\Query($search, $options);
print('<br />********$query :<br />');
echo '<pre>';
print_r($query);
echo '</pre>';
如果$选项似乎可以:
--------$options:
数组([排序]=
$query没有给我好的选项:
********$query :
MongoDB\Driver\Query Object
(
[query] => stdClass Object
(
[$orderby] => stdClass Object
(
[_id] => 1
)
[$query] => stdClass Object
(
)
)
[selector] =>
[flags] => 0
[skip] => 20
[limit] => 0
[batch_size] => 0
[readConcern] =>
)
限制和批量大小不等于20,为什么?请问怎么办?
提前感谢
在PHP 7.2.2上测试:
<?php
$options= [
'skip' => 20,
'limit' => 20,
'batchSize' => 20
];
$filter= [
'_id' => '5a8adcf335f6d112d00e46c8'
];
$query= new MongoDB\Driver\Query($filter, $options);
print_r($query);
产出:
MongoDB\驱动程序\查询对象([filter]=
[options] => stdClass Object
(
[batchSize] => 20
[skip] => 20
[limit] => 20
)
[readConcern] => )
解决方案(摘自评论)
作为options
传递给查询实例的参数以类型敏感的方式处理,在作者的情况下,参数是从用户输入传递的,并作为“字符串”而不是“数字”传递的。解决方案是对解决问题的参数使用intval()
。
如果事情仍然无法按预期工作-更新MongoDB
我检查了MongoDB PECL回购的变更日志,但找不到错误何时修复。我建议更新到最新版本并再次测试。
通过使用MongoDB和Java驱动程序,我有一个用户集合,我想根据他们的ObjectId进行查询(总体情况:我从ObjectId推断出对象的创建时间戳)。 问题是,用ObjectId查询似乎不起作用:我总是没有结果。为了测试的目的,我在搜索查询中硬编码了数据库中现有用户的ObjectId,只是为了确保我能得到结果: {“_id”:ObjectId(“565ef85ee4b0a4db3c2fc96
我使用下面的mongo查询来获取最高温度。有人能帮助我们如何使用mongo java驱动程序,使用和在java中实现吗?
我正在尝试使用MongoDBJava驱动程序作为聚合命令的一部分创建查询。目前我允许日期范围或特定日期数组作为参数。例如 日期范围查询工作正常,我解析xml并将其转换为在mongo中生成以下查询的DBObject; 对于指定日期,我只想返回在给定日期的00:00:00.000和第二天的00:00:00.000之间发生的结果。根据我对mongo查询的基本了解,我希望做一个类似于日期范围的$匹配,但是
问题内容: 我正在尝试通过搜索“ _id”键在MongoDB中查找文档。我的文件看起来像这样- 我正在尝试将此文档搜索为- 但我得到以下错误- BasicDBObject的append方法支持(字符串键,值),如果我将“ _id”作为String传递给此方法,则不会匹配任何文档。 所以我的问题是如何传递“ _id”? 问题答案: 通过使用as作为查询来解决
问题内容: 我有一个使用mongodb本机驱动程序的node.js应用程序。在使用节点v8.9.1将应用程序代码迁移到异步/等待的过程中,我努力寻找一种适合mongodb查询的好方法。mongodb驱动程序的主要问题是,所有查询都使用回调,其中对异步方法来说,promise函数是必需的。 备择方案: 猫鼬 -承诺不赞成使用查询,它会强制使用Schema模型,这对我的应用程序来说有点开销。 mong
问题内容: 我正在尝试或在MongoDB中使用某些条件(使用Java驱动程序)。这就是我在做什么: 我想在这些条件下使用操作数,但是我想默认值是“和”,我不知道如何更改它。在上面的代码中,如果条件之一返回,结果也将是。 问题答案: 您正确地说,在查询中指定多个字段的“默认”是每个字段都用作条件过滤器,因此是“与”运算。 您可以使用具有以下语法的$ or操作数,通过OR子句执行MongoDB查询: