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

ऑब्जेक्ट की तुलना करने के लिए $ लुकअप में मोंगोडब $ मैच ऑपरेशन अपेक्षित रूप से काम नहीं कर रहा है

इसे आजमाएं

const { user } = req;

productsModels.aggregate([
            { $sort: { '_id': -1 } },
            { $limit: 10 },
            {
                $lookup: {
                    from: 'likes',
                    let: {productId:"$_id"},
                    pipeline: [
                        {
                            $match: {
                                $expr:{$eq:['$_id', '$$productId']}},
                                'userId': mongoose.Type.Object(user.id)
                            }
                        }
                    ],
                    as: 'liked'
                }
            },
        ]);}

आपकी क्वेरी में दो चीज़ें गायब हैं

1) यूजर आईडी को मोंगो ऑब्जेक्ट आईडी में कनवर्ट करना इसलिए हमने mongoose.Types.ObjectId का उपयोग किया

2) आप बाहरी संग्रह क्षेत्र का उपयोग सीधे आंतरिक पाइपलाइन में नहीं कर सकते हैं इसके लिए आपने अस्थायी चर बनाया है इसलिए हमने let का उपयोग किया घोषित करने और आंतरिक क्षेत्र के साथ मिलान करने के लिए हमें $expr . का उपयोग करने की आवश्यकता है




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला कनेक्शन

  2. MongoDB प्रतिकृति सेट की स्थापना

  3. मुझे रिलेशनल डेटाबेस के बजाय NoSQL डेटाबेस का उपयोग कब करना चाहिए? क्या एक ही साइट पर दोनों का उपयोग करना ठीक है?

  4. जावा का उपयोग करके मोंगोडीबी में खुले कनेक्शन की संख्या प्राप्त करें

  5. मोंगोडब कुल प्रश्नों को जोड़ता है