web-dev-qa-db-fra.com

Mongodb - mauvaise requête: BadValue, opérateur de niveau supérieur inconnu: $ gte

Quel est le problème avec cette requête? J'ai essayé de l'exécuter sur le serveur mongodb et j'ai reçu une erreur comme suit - "exception: mauvaise requête: opérateur de niveau supérieur inconnu BadValue: $ gte". Quelqu'un peut-il me dire ce qui ne va pas, s'il vous plaît?

        db.scores.aggregate([ 
            { 
                $match: { 
                    $or: [ 
                        { $gte: [ "$score", 30 ] }, 
                        { $lte: [ "$score", 60 ] } 
                    ] 
                } 
            },
            { 
                $group: { 
                    _id: "$gamer",
                    games: { $sum: 1 }
                } 
            }
        ])

exemples de données:

        {
            "_id" : "545665cef9c60c133d2bce72",
            "score" : 85,
            "gamer" : "Latern"
        }

        /* 1 */
        {
            "_id" : "545665cef9c60c133d2bce73",
            "score" : 10,
            "gamer" : "BADA55"
        }

        /* 2 */
        {
            "_id" : "545665cef9c60c133d2bce74",
            "score" : 62,
            "gamer" : "BADA55"
        }

        /* 3 */
        {
            "_id" : "545665cef9c60c133d2bce75",
            "score" : 78,
            "gamer" : "l00ser"
        }

        /* 4 */
        {
            "_id" : "545665cef9c60c133d2bce76",
            "score" : 4,
            "gamer" : "l00ser"
        }

        /* 5 */
        {
            "_id" : "545665cef9c60c133d2bce77",
            "score" : 55,
            "gamer" : "FunnyCat"
        }
15
Evaldas Raisutis

Vous avez mal fait ça. Devrait être:

db.scores.aggregate([
    { "$match": {
        "score": { "$gte": 30, "$lte": 60 }
    }},
    { "$group": {
        "_id": "$gamer",
        "games": { "$sum": 1 }
    }}
])

Quelle est la bonne façon de spécifier une requête "plage" où les conditions réelles sont "et" et donc "entre" les opérandes spécifiés.

13
Neil Lunn