首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用php测试出mongodb出现未定义的索引应该如何解决?

用php测试出mongodb出现未定义的索引应该如何解决?
EN

Stack Overflow用户
提问于 2018-06-01 11:10:19
回答 1查看 0关注 0票数 0

正在用php测试出mongodb,并且遇到了一个我不知道如何解决的问题,这是我目前使用的代码。

代码语言:javascript
复制
<?php

require ($_SERVER['DOCUMENT_ROOT'] . '/grafic/mongodb_php/vendor/autoload.php'); 

$client = new MongoDB\Client;
$snrdb = $client->snrdb;
$nodos_live = $snrdb->nodos_live;

$filter  = [];
$options = ['sort' => ['_id' => 1], 'limit' => 1];

$show = $nodos_live->find($filter, $options);

foreach ($show as $collection) {
    $snr_1= $collection["n1_snr_1"];
    $snr_2= $collection["n1_snr_2"];
}

echo $snr_1 ." ";
echo $snr_2;

?>

输出 28.9 28.3

现在如果我将ID和集合名称更改为2和n2_snr_ *就像这样。

代码语言:javascript
复制
<?php

require ($_SERVER['DOCUMENT_ROOT'] . '/grafic/mongodb_php/vendor/autoload.php'); 

$client = new MongoDB\Client;
$snrdb = $client->snrdb;
$nodos_live = $snrdb->nodos_live;

$filter  = [];
$options = ['sort' => ['_id' => 2], 'limit' => 1];

$show = $nodos_live->find($filter, $options);

foreach ($show as $collection) {
    $snr_1= $collection["n2_snr_1"];
    $snr_2= $collection["n2_snr_2"];
}

echo $snr_1 ." ";
echo $snr_2;

?>

这给了我这个错误消息:

Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionException: bad sort specification in C:\xampp\htdocs\grafic\mongodb_php\vendor\mongodb\mongodb\src\Operation\Find.php:287 Stack trace: #0 C:\xampp\htdocs\grafic\mongodb_php\vendor\mongodb\mongodb\src\Operation\Find.php(287): MongoDB\Driver\Server->executeQuery('snrdb.nodos_liv...', Object(MongoDB\Driver\Query), Array) #1 C:\xampp\htdocs\grafic\mongodb_php\vendor\mongodb\mongodb\src\Collection.php(531): MongoDB\Operation\Find->execute(Object(MongoDB\Driver\Server)) #2 C:\xampp\htdocs\grafic\test\test.php(23): MongoDB\Collection->find(Array, Array) #3 {main} thrown in C:\xampp\htdocs\grafic\mongodb_php\vendor\mongodb\mongodb\src\Operation\Find.php on line 287

为什么得到这个错误 ?

如果做这样的转储

代码语言:javascript
复制
<?php 

require ($_SERVER['DOCUMENT_ROOT'] . '/grafic/mongodb_php/vendor/autoload.php'); 

$client = new MongoDB\Client;
$snrdb = $client->snrdb;
$nodos_live = $snrdb->nodos_live;

$show = $nodos_live->findOne(
    ['_id' => '1']
);

var_dump($show)

?>

我得到显示,是一个id为1的文档

代码语言:javascript
复制
object(MongoDB\Model\BSONDocument)#19 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    string(1) "1"
    ["n1_snr_1"]=>
    float(28.9)
    ["n1_snr_2"]=>
    float(28.3)
    ["n1_snr_3"]=>
    string(1) "0"
    ["time_stamp"]=>
    string(19) "2018-05-31 21:44:22"
  }
}

做了_id => 2的转储,表明也存在。

代码语言:javascript
复制
object(MongoDB\Model\BSONDocument)#19 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    string(1) "2"
    ["n2_snr_1"]=>
    float(31.7)
    ["n2_snr_2"]=>
    float(35.7)
    ["n2_snr_3"]=>
    string(1) "0"
    ["time_stamp"]=>
    string(19) "2018-05-31 21:44:22"
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-01 20:15:41

sort1升序和-1降序只能取两个值。如果想查询文档_id=2,则必须在查询中指定,而不是在排序标准中指定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档