Node.js Mongoose:抓取具有特定属性的文档。长度>0

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)

我目前正试图使用Mongoose从服务器上获取电影列表,但我只想要属性评级具有实际值的电影,而属性评级是一个数组。我尝试了下面使用.where'ratings.length.gt0的方法,但它没有正确过滤,因为有评级的电影无法通过。有人知道这样做的正确方法吗

 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实现在哪里