MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एक सरणी को सॉर्ट करें और MongoDB में एक रैंक फ़ील्ड जोड़ें

मुझे लगता है कि आपका तरीका अच्छा है लेकिन बस results.length . बदलें से user.length . तक लेकिन अगर आप mongoDB ऑपरेशन का उपयोग करना चाहते हैं तो ऐसा करें:

db.collection.aggregate([
  {
    "$sort": {
      "score": -1
    }
  },
  {
    "$group": {
      "_id": "",
      "items": {
        "$push": "$$ROOT"
      }
    }
  },
  {
    "$unwind": {
      "path": "$items",
      "includeArrayIndex": "items.rank"
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$items"
    }
  },
  {
    "$sort": {
      "score": -1
    }
  }
])

आप lean() का उपयोग कर सकते हैं और select find . में कुछ फ़ील्ड प्रदर्शन बढ़ाने के लिए क्वेरी

async findRank() {
  const users = await User.find({},"_id score").sort({score: -1}).lean()
  for (let index = 0; index < users.length; index++) {
    users[index].rank = index
  }
  return users
}
if you want group by the documents based on name or score ... it's better use mongodb operation



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. खोज विधि में AND - ऑपरेटर का उपयोग करें

  2. मोंगोडब में न्यूनतम मूल्य कैसे खोजें?

  3. दो समवर्ती अनुरोध Node.js ऐप में मिश्रित हो रहे हैं

  4. मोंगो दस्तावेज़ में नेस्टेड फ़ील्ड का डेटाटाइप कैसे बदलें?

  5. मोंगोडब कुल कई सरणियाँ