Mongoose:通过数组中最少出现的单词对查询结果进行排序

时间:2016-09-07 14:15:05

标签: mongodb mongoose

我有一系列视频:

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

你能帮忙吗?

1 个答案:

答案 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对数据进行排序。这样效率会降低,可能需要一些调整,但这肯定会有效。

希望这有帮助。