猫鼬:使用某些property.length>抓取文档0

时间:2018-02-19 16:30:09

标签: node.js mongodb mongoose

我目前正在尝试使用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中的文档图片

enter image description here

1 个答案:

答案 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()