我目前正在尝试使用Mongoose从服务器获取电影列表,但我只想要属性评级的电影中存储了实际值(评级是一个数组)。我使用.where('ratings.length').gt(0)
尝试了以下方式,但它没有正确过滤它,因为评级的电影没有通过。有谁知道这样做的正确方法?
Movie.find()
.where('ratings.length').gt(0)
.sort({averageRating:1})
.limit(100)
.exec(function(err, movies){
if (err) {
res.status(500).json({
message: "An error occurred",
obj: err
})
}
res.status(200).json({
Message: "success",
obj: movies
})
})
mongodb中的文档图片
答案 0 :(得分:1)
您可以像这样使用$where
:
Movie
.$where('this.ratings.length > 0')
.sort({
averageRating: 1
})
.limit(100)
.exec(function (err, movies) {
if (err) {
res.status(500).json({
message: "An error occurred",
obj: err
})
}
res.status(200).json({
Message: "success",
obj: movies
})
})
在Mongo 2.2+之后,你也可以这样做以提高效率:
Movie.where('ratings.1').exists()