首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoCursorException : MangoDB as_array()中查询中的跳跃值错误

MongoCursorException : MangoDB as_array()中查询中的跳跃值错误
EN

Stack Overflow用户
提问于 2012-09-27 06:16:27
回答 1查看 1.4K关注 0票数 1

我有一个名为"companies“的mongo集合,它看起来像这样:

代码语言:javascript
复制
{
    "_id" : ObjectId("..."),
    "name" : "company_1",
    "active" : false,
    "projects" : [
        {
            "_id" : ObjectId("..."),
            "name" : "Prj_1",
            ...
        },
        {
            "_id" : ObjectId("..."),
            "name" : "Prj_2" ,
            ...
        }
    ],
    "rating" : 0,
    ...
}
...

我使用Kohana 3.2作为我的框架和MangoDb库。

我想写一个函数来检索所有的项目并为用户列出它们(Retrieving a Subset of Fields)。

这是我的公司模型:

代码语言:javascript
复制
<?php

class Model_Company extends Mango {

    protected $_db = 'default';
    protected $_collection = 'companies';
    protected $_fields = array(
        'name' => array(
            'type' => 'string',
            'required' => TRUE,
        ),
        'active' => array(
            'type' => 'boolean',
        ),
        'rating' => array(
            'type' => 'float',
        ),

        'projects' => array(
            'type' => 'has_many',
        ),
        ...
        ...
    );

    public function data_list($from = 0, $limit = 10, $sort = NULL)
    {
        return Mango::factory('company')->load(array( 'limit' => $limit, 'sort' => $sort, 'skip' => $from ));
    }

}

这是嵌入式项目模型:

代码语言:javascript
复制
<?php

class Model_Project extends Mango {

    protected $_embedded = TRUE;
    protected $_db = 'default';
    //protected $_collection = 'projects';
    protected $_fields = array(
        '_id' => array(
            'type' => 'MongoId'
        ),
        'name' => array(
            'type' => 'string',
            'required' => TRUE,
        ),
        ...
        ...

    );

    public function data_list($from = 0, $limit = 10, $sort = NULL)
    {
        return Mango::factory('company')->load(array(
            'limit' => $limit, 
            'sort' => $sort, 
            'skip' => $from ,
            'fields'=>array('projects' => TRUE)
         ));
    }

}

当我尝试运行下面的代码行时:

代码语言:javascript
复制
$projects_list = Mango::factory('project')->data_list($from, $this->list_items_per_page)->as_array();

我收到下面列出的错误消息:

代码语言:javascript
复制
MongoCursorException [ 10105 ]: bad skip value in query

MODPATH\mongo\classes\mango\iterator.php [ 108 ]

103     /**
104      * Iterator: rewind
105      */
106     public function rewind()
107     {
108         $this->_cursor->rewind();
109     }
110 
111     /**
112      * Iterator: valid
113      */

此错误的原因是什么?如何解决此问题?

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 00:16:46

当您向查询传递一个小于0的“跳过”值时,就会出现此错误。我建议将你传递给“工厂”函数的“跳过”值打印出来进行确认。

由于不知道您的数据,也不知道在哪里调用该特定行,我不能确切地说为什么传入一个负数,但这就是错误的原因。

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

https://stackoverflow.com/questions/12611286

复制
相关文章

相似问题

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