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

MongoDB लुकअप जब विदेशी क्षेत्र एक सरणी है

आप $lookup का उपयोग कर सकते हैं कस्टम पाइपलाइन जो आपको 0 . देगा या 1 परिणाम और फिर $size का उपयोग करें किसी सरणी को एकल बूलियन मान में बदलने के लिए:

db.reports.aggregate([
    {
        $lookup: {
            from: "users",
            let: { report_id: "$_id" },
            pipeline: [
                {
                    $match: {
                        $expr: {
                            $and: [
                                { $eq: [ "$name", "Mike" ] },
                                { $in: [ "$$report_id", "$favorites" ] }
                            ]
                        }
                    }
                }
            ],
            as: "users"
        }
    },
    {
        $project: {
            _id: 1,
            name: 1,
            favorite: { $eq: [ { $size: "$users" }, 1 ] }
        }
    }
])

वैकल्पिक रूप से यदि आपको 3.6 से कम MongoDB संस्करण का उपयोग करने की आवश्यकता है तो आप नियमित $lookup . का उपयोग कर सकते हैं और फिर $filter का उपयोग करें केवल उन उपयोगकर्ताओं को प्राप्त करने के लिए जहां name Mike है :

db.reports.aggregate([
    {
        $lookup: {
            from: "users",
            localField: "_id",
            foreignField: "favorites",
            as: "users"
        }
    },
    {
        $project: {
            _id: 1,
            name: 1,
            favorite: { $eq: [ { $size: { $filter: { input: "$users", as: "u", cond: { $eq: [ "$$u.name", "Mike" ] } } } }, 1 ] }
        }
    }
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongo.so:> अपरिभाषित प्रतीक:php_json_encode अज्ञात में लाइन 0 पर। स्थापना के बाद php के लिए mongo ड्राइवर

  2. मैं कुछ शर्तों के आधार पर अलग-अलग पेजों पर रीडायरेक्ट करना चाहता हूं

  3. क्या MongoDB में हाल ही में हटाए गए दस्तावेज़ों को पुनर्प्राप्त करने का कोई तरीका है?

  4. एक क्षेत्र के साथ mongoexport कैसे करें

  5. दो संग्रहों पर एक मोंगो अंतर की तुलना करें