我们在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
已经考虑过解决方案:
需要输入如何解决此问题。
答案 0 :(得分:3)
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);
答案 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
}
})