我有一系列视频:
var VideoSchema = new mongoose.Schema({
url: {
type: String, required : true
},
orderBy: {
type: Number
},
views: [{
type: String
}]
});
' ORDERBY'让我来定义我提供视频的顺序
'视图'是一个用户名列表,是那些观看了视频的用户名。
我想让用户不再观看相同的视频,直到他们观看了收藏中的所有视频。因此,我将观看视频的用户的姓名保留在'视图中。
现在我使用'排序'来查询视频。
return this.find(videoQuery)
.skip(offset)
.limit(count || 10) // @todo 10 : param
.sort({views: {$meta: username}, 'orderBy': -1})
.exec();
我收到错误消息:
Can't canonicalize query: BadValue bad sort specification
你能帮忙吗?
答案 0 :(得分:0)
可能是错的,但是来自mongo docs。在sort中指定$ meta时,需要将其包含在projectedFieldName中。
https://docs.mongodb.com/manual/reference/operator/projection/meta/#proj._S_meta
所以看起来应该是这样的
property 'sonar.sources', 'src/main'
<强>已更新强> 似乎$ meta只接受&#39; textScore&#39;正如@Pierre所说。
所以另一个建议是当响应来自DB时使用下划线或本机js对数据进行排序。这样效率会降低,可能需要一些调整,但这肯定会有效。
希望这有帮助。