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

फॉर-लूप में एकाधिक एसिंक-फ़ंक्शंस के बाद नोडजेएस कॉलबैक

आपकी सुविधा के आधार पर आप यहां सर्वरल दृष्टिकोण का उपयोग कर सकते हैं

async प्रतीक्षा का उपयोग करना

let article = await Article.findOne({ _id: articleid }).lean().exec()

await Promise.all(
  article.comment.map(async(obj) => {
    const user = await User.findOne({ _id: obj.user })
    obj.username = user.username
  })
)

console.log(article)

$lookup का उपयोग करना एकत्रीकरण 3.6

चूंकि मोंगोडब का अपना शक्तिशाली $lookup एकाधिक संग्रह में शामिल होने के लिए एकत्रीकरण ऑपरेटर और शायद बिना किसी पुनरावृत्ति के बेहतर दृष्टिकोण

Article.aggregate([
  { "$match": { "_id": mongoose.Types.ObjectId(articleid) }},
  { "$unwind": "$comment" },
  { "$lookup": {
    "from": "users",
    "let": { "userId": "$comment.user" },
    "pipeline": [
      { "$match": { "$expr": { "$eq": ["$$userId", "$_id"] }}}
    ],
    "as": "comment.user"
  }},
  { "$unwind": "$comment.user" },
  { "$group": {
    "_id": "$_id",
    "comment": { "$push": "$comment" },
    "completed": { "$first": "$completed" },
    "completedAt": { "$first": "$completedAt" }
  }}
])

$lookup का उपयोग करना एकत्रीकरण 3.4

Article.aggregate([
  { "$match": { "_id": mongoose.Types.ObjectId(articleid) }},
  { "$unwind": "$comment" },
  { "$lookup": {
    "from": "users",
    "localField": "comment.user",
    "foreignField": "_id",
    "as": "comment.user"
  }}
  { "$unwind": "$comment.user" },
  { "$group": {
    "_id": "$_id",
    "comment": { "$push": "$comment" },
    "completed": { "$first": "$completed" },
    "completedAt": { "$first": "$completedAt" }
  }}
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक मोंगोडब दस्तावेज़ अपडेट होने के बाद कब समाप्त होगा?

  2. मैं नेवला का उपयोग करके निम्न उत्पाद के लिए स्कीमा कैसे डिज़ाइन कर सकता हूँ?

  3. MongoDB:एक पाठ खोज कैसे करें और एक तिथि के अनुसार क्रमबद्ध करें

  4. हर पांच मिनट में Node.js जॉब शेड्यूल करें

  5. सी # मोंगोडब - नेस्टेड सरणी तत्वों को कैसे अपडेट करें?