Node.js Mongoose:抓取具有特定属性的文档。长度>0
我目前正试图使用Mongoose从服务器上获取电影列表,但我只想要属性评级具有实际值的电影,而属性评级是一个数组。我尝试了下面使用.where'ratings.length.gt0的方法,但它没有正确过滤,因为有评级的电影无法通过。有人知道这样做的正确方法吗Node.js Mongoose:抓取具有特定属性的文档。长度>0,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我目前正试图使用Mongoose从服务器上获取电影列表,但我只想要属性评级具有实际值的电影,而属性评级是一个数组。我尝试了下面使用.where'ratings.length.gt0的方法,但它没有正确过滤,因为有评级的电影无法通过。有人知道这样做的正确方法吗 Movie.find() .where('ratings.length').gt(0) .sort({averageRating:1}) .limit(100)
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中的文档图像
您可以使用$,如下所示:
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()
尝试此操作时出现以下错误:ReferenceError:未定义评级:↵@:1:15↵您的文档中有分级吗?是的,每个电影文档都有分级属性。嘿。。我在$where查询中漏掉了这个。用这个再试一次?猫鼬在哪里。比常规find方法更简单的语法。Ref:$本地MongoDB实现在哪里