javascript - 未知的顶级运营商 : $orderby

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

我们有一个 node.js + mongoose应用程序在 Ubuntu linux 上运行服务器运行 DigitalOcean虚拟专用服务器。

我们的一个 Mongoose 查询有一个 text index使用以下运算符:

看起来像这样:

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

抛出这个错误:

unknown top level operator: $orderby

已经考虑过的解决方案:

需要有关如何解决此问题的意见。

最佳答案

Query modifiers$orderBy 不再被支持:

Starting in v3.2, the query “meta” operators are deprecated in the mongo shell. In the mongo shell, use the cursor methods instead.

按照文档的建议,使用像 sort 这样的游标方法和 limit 代替:

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

关于javascript - 未知的顶级运营商 : $orderby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48049038/

相关文章:

javascript - 如何在 Chrome 扩展程序中缓存数据?

javascript - 在运行时加载 BingMaps API

node.js - 我收到 "error message: Process exited before completing request"

mongodb - 固定值字段的 Mongoose 复合索引

mongodb查询带有日期字段的嵌套数组

node.js - 如何使用 mongoose 查找并合并多个集合

javascript - 单击链接将选择乳头移动到选定的 div ID

javascript - 实时 CSS 编辑插件

javascript - 映射数组返回逗号

node.js - 如何将 session ID添加到winston logger中的每个日志