未知的顶级操作员:$ orderby

问题描述 投票:1回答:2

我们在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

解决方案已考虑:

需要输入如何解决这个问题。

javascript node.js mongodb mongoose full-text-indexing
2个回答
2
投票

不再支持像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);

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
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.