未知的顶级操作员:$ orderby

时间:2018-01-01 10:51:31

标签: javascript node.js mongodb mongoose full-text-indexing

我们在node.js VPS上运行的mongoose服务器上运行了Ubuntu linux + DigitalOcean个应用。

我们的一个mongoose查询中有一个text index,其中包含以下运算符:

看起来像这样:

db.sampleCollection.find({
  $text: {
    $search: userInput
  },
  $lte: {
    expired: (new Date()).addDays(30)
  },
  $limit: 9,
  $orderby: {
    postedAt: -1
  }
})

会抛出此错误:

  

未知的顶级操作员:$ orderby

已经考虑过解决方案:

需要输入如何解决此问题。

2 个答案:

答案 0 :(得分:3)

Query modifiers不再支持$orderBy

  

从v3.2开始,在mongo shell中不推荐使用查询“meta”运算符。在mongo shell中,改为使用游标方法。

根据文档的建议,请使用sortlimit之类的游标方法:

db.sampleCollection.find({
  $text: {
    $search: userInput
  },
  $lte: {
    expired: (new Date()).addDays(30)
  }
})
.sort({
    postedAt: -1
})
.limit(9);

答案 1 :(得分:0)

检查你的mongodb版本orderby自v3.2以来已被弃用

$orderby Deprecated in the mongo Shell since v3.2
In the mongo shell,use cursor.sort() instead.

https://docs.mongodb.com/manual/reference/operator/meta/orderby/

db.sampleCollection.find({
    $text   : {
        $search: userInput
    },
    $lte    : {
        expired: (new Date()).addDays(30)
    },
    $limit  : 9,
    $sort: {
        postedAt: -1
    }
})