MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongodb sắp xếp tài liệu theo giá trị tính toán phức tạp

$temp_score của bạn và $temp_votes chưa tồn tại trong $divide của bạn .

Bạn có thể thực hiện một $project khác :

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"]
        }
    }
}])

hoặc tính toán lại temp_scoretemp_votes trong $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] }
            ]
        }
    }
}]);

Bạn cũng có thể thực hiện việc này trong một $project bằng cách sử dụng $let nhà điều hành sẽ được sử dụng để tạo 2 biến temp_scoretemp_votes . Nhưng kết quả sẽ có thể truy cập được trong một trường duy nhất (tại đây 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. MongoDB:Bạn vẫn nên cung cấp ID liên kết đến các bộ sưu tập khác hay chỉ bao gồm các bộ sưu tập?

  2. Mongo db with Monk:bắt lỗi và xử lý nếu db bị lỗi

  3. Tìm kiếm và thay thế trong Mongodb?

  4. Làm cách nào để cập nhật một khóa cụ thể bên trong tài liệu con MongoDB bằng cách sử dụng Sails.js &Waterline?

  5. Mongo DB, PHP thêm hoặc cập nhật một trường trong tài liệu