Javascript 未知的顶级运算符:$orderby

Javascript 未知的顶级运算符:$orderby,javascript,node.js,mongodb,mongoose,full-text-indexing,Javascript,Node.js,Mongodb,Mongoose,Full Text Indexing,我们在VPS上的服务器上运行+应用程序 我们的一个mongoose查询与以下运算符有冲突: 看起来是这样的: db.sampleCollection.find({ $text: { $search: userInput }, $lte: { expired: (new Date()).addDays(30) }, $limit: 9, $orderby: { postedAt: -1 } }) 这会引发此错误: 未知的顶级运算符:$

我们在VPS上的服务器上运行+应用程序

我们的一个mongoose查询与以下运算符有冲突:

看起来是这样的:

db.sampleCollection.find({
  $text: {
    $search: userInput
  },
  $lte: {
    expired: (new Date()).addDays(30)
  },
  $limit: 9,
  $orderby: {
    postedAt: -1
  }
})
这会引发此错误:

未知的顶级运算符:$orderby

已经考虑的解决办法:

  • ,但是我们在查询中没有使用该运算符
  • ,但是我们需要它来查找函数
  • ,但我们需要非数组索引的解决方案
  • 我们不是混合运算符

需要关于如何修复此问题的输入。

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

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

不再支持like
$orderBy

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

按照文档的建议,使用和
limit
等光标方法:

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

@RolandStarke此查询无论如何都没有在mongo shell上运行,我们的是MongoDB服务器版本:
3.4.3
您是否尝试了
$sort
而不是
$orderby
?看看这个解决方案:它可能会对您有所帮助。@PierreR-A感谢您的输入,我们将很快尝试实现它,并返回使用
mongodb
库从javascript执行查询怎么样?
db.sampleCollection.find({
  $text: {
    $search: userInput
  },
  $lte: {
    expired: (new Date()).addDays(30)
  }
})
.sort({
    postedAt: -1
})
.limit(9);