如果我链接 .sort(),猫鼬查询失败

Mongoose query fails if I chain .sort()

本文关键字:查询 失败 链接 sort 如果      更新时间:2023-09-26

Using Mongoose 4.3.6

这个查询工作得很好:(这是咖啡脚本,我在下面添加了Javascript等效项)

age = 43200000 # Milliseconds = 24h
Ad
    .find
        site : body.codeName
        checked :
            $lt : new Date( (new Date()) - age )
    .exec (err,ads) ->
        return res.status(500).send err if err
        log "Found #{ads.length} ads"

所以它有效,我得到

"找到 38246 个广告"

但是,如果我想在"选中"字段上排序:

age = 43200000 # Milliseconds = 24h
Ad
        .find
            site : body.codeName
            checked :
                $lt : new Date( (new Date()) - age )
        .sort '-checked'
        .exec (err,ads) ->
            return res.status(500).send err if err
            log "Found #{ads.length} ads" # ads is undefined

然后我得到

"错误:广告未定义"

显然,"选中"字段存在,因为查询#1有效。在我的猫鼬模型中,它属于"日期"类型。


与编译的Javascript相同的代码:

var age = 43200000;
Ad.find({
  site: body.codeName,
  checked: {
    $lt: new Date((new Date()) - age)
  }
}).exec(function(err, ads) {
  if (err) {
    return res.status(500).send(err);
  }
  return log("Found " + ads.length + " ads");
});

"找到 38246 个广告"

var age = 43200000;
Ad.find({
      site: body.codeName,
      checked: {
        $lt: new Date((new Date()) - age)
      }
}).sort('-checked').exec(function(err, ads) {
      if (err) {
        return res.status(500).send(err);
      }
      return log("Found " + ads.length + " ads"); // Error : ads is undefined
});

"错误:广告未定义"

有什么想法吗?

启用猫鼬调试后,我设法得到以下错误输出:

[MongoError: getMore executor error: Overflow sort stage bufferdata 33554893 字节的使用量超过 33554432 字节的内部限制]

看起来如果查询返回太多结果,MongoDB 无法排序......