我们在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
解决方案已考虑:
需要输入如何解决这个问题。
不再支持像Query modifiers这样的$orderBy
:
从v3.2开始,在mongo shell中不推荐使用查询“meta”运算符。在mongo shell中,使用游标方法。
正如文档所建议的那样,使用像sort
和limit
这样的游标方法:
db.sampleCollection.find({
$text: {
$search: userInput
},
$lte: {
expired: (new Date()).addDays(30)
}
})
.sort({
postedAt: -1
})
.limit(9);
检查你的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
}
})