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

नेवला दो संग्रहों में शामिल होता है और दो गुणों में संदर्भित डेटा प्राप्त करता है

आप कोशिश कर सकते हैं,

  • $addFields userIds called नामक एक अद्वितीय सरणी बनाने के लिए दोनों सरणियाँ बनाएं followers और followings , $setUnion अद्वितीय आईडी प्राप्त करने के लिए,
  • $lookup उपयोगकर्ता संग्रह के साथ
  • $project फ़ील्ड दिखाने के लिए,
    • followers followers . के लूप को पुनरावृत्त करने के लिए fullName, $map प्राप्त करें और followerId . का नाम प्राप्त करें $reduce . का उपयोग करके उपयोगकर्ता सरणी से और $cond
    • followings followings . के लूप को पुनरावृत्त करने के लिए fullName, $map प्राप्त करें और followingId . का नाम प्राप्त करें $reduce . का उपयोग करके उपयोगकर्ता सरणी से और $cond
db.followings.aggregate([
  {
    $addFields: {
      userIds: {
        $setUnion: [
          {
            $map: {
              input: "$followers",
              in: "$$this.followerId"
            }
          },
          {
            $map: {
              input: "$followings",
              in: "$$this.followingId"
            }
          }
        ]
      }
    }
  },
  {
    $lookup: {
      from: "users",
      localField: "userIds",
      foreignField: "_id",
      as: "users"
    }
  },
  {
    $project: {
      userId: 1,
      followers: {
        $map: {
          input: "$followers",
          as: "f",
          in: {
            $mergeObjects: [
              "$$f",
              {
                fullName: {
                  $reduce: {
                    input: "$users",
                    initialValue: "",
                    in: {
                      $cond: [
                        { $eq: ["$$this._id", "$$f.followerId"] },
                        "$$this.fullName",
                        "$$value"
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      },
      followings: {
        $map: {
          input: "$followings",
          as: "f",
          in: {
            $mergeObjects: [
              "$$f",
              {
                fullName: {
                  $reduce: {
                    input: "$users",
                    initialValue: "",
                    in: {
                      $cond: [
                        { $eq: ["$$this._id", "$$f.followingId"] },
                        "$$this.fullName",
                        "$$value"
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
])

खेल का मैदान



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB रेगेक्स, सूचकांक और प्रदर्शन

  2. मोंगो सी # जेएसओएन पाठक एक मूल्य की उम्मीद कर रहा था लेकिन 'replSetGetStatus' मिला

  3. एलम मैच सभी डेटा लौटा रहा है जबकि मुझे केवल चयनित डेटा चाहिए

  4. MongoDB एक सरणी के भीतर सरणी वस्तु को अद्यतन कर रहा है

  5. जावा ड्राइवर के साथ MongoDB में स्कीमा परिवर्तन को संभालने का उचित तरीका