MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb сортира документи по сложна изчислена стойност

Вашият $temp_score и $temp_votes все още не съществуват във вашия $divide .

Можете да направите друг $project :

db.user.aggregate([{
    "$project": {
        'temp_score': {
            "$add": ["$total_score", 100],
        },
        'temp_votes': {
            "$add": ["$total_votes", 20],
        }
    }
}, {
    "$project": {
        'temp_score':1,
        'temp_votes':1,
        'weight': {
            "$divide": ["$temp_score", "$temp_votes"]
        }
    }
}])

или повторно изчисляване на temp_score и temp_votes в $divide :

db.user.aggregate([{
    "$project": {
        'temp_score': {
            "$add": ["$total_score", 100],
        },
        'temp_votes': {
            "$add": ["$total_votes", 20],
        },
        'weight': {
            "$divide": [
                { "$add": ["$total_score", 100] },
                { "$add": ["$total_votes", 20] }
            ]
        }
    }
}]);

Можете също да направите това в един единствен $project използвайки $let оператор който ще се използва за създаване на 2 променливи temp_score и temp_votes . Но резултатите ще бъдат достъпни в едно поле (тук total ) :

db.user.aggregate([{
    $project: {
        total: {
            $let: {
                vars: {
                    temp_score: { $add: ["$total_score", 100] },
                    temp_votes: { $add: ["$total_votes", 20] }
                },
                in : {
                    temp_score: "$$temp_score",
                    temp_votes: "$$temp_votes",
                    weight: { $divide: ["$$temp_score", "$$temp_votes"] }
                }
            }
        }
    }
}])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да направите многократно текстово търсене с помощта на $text query и $or в mongodb / mongoose?

  2. $in изисква масив като втори аргумент, намерено:липсва

  3. ГРЕШКА:дъщерен процес е неуспешен, излязъл е с номер на грешка 51 MongoDB

  4. Клониране на MongoDB екземпляр или набор от реплики

  5. Търсене без регистри в Mongo