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

MongoDb $addFields और $match

अगली बार कृपया अपने दस्तावेज़ का एक नमूना जोड़ें ताकि लोग आपकी समस्या का पुनरुत्पादन कर सकें। यह कहकर कि मैं नहीं देखता कि आपकी समस्या कहां है। मैंने आपके उपयोगकेस को पुन:पेश करने के लिए कुछ डेटा बनाया है। इसलिए मैंने निम्नलिखित दस्तावेज़ जोड़ा:

{ 
    "_id" : ObjectId("5a0d5d376c9b762a7c035ec4"), 
    "projectName" : "some stack test", 
    "price" : NumberInt(45), 
    "propertyId" : {
        "prefix" : "a", 
        "number" : "7"
    }
}

फिर मैंने आपकी स्क्रिप्ट को निष्पादित किया (बिना किसी प्रकार के) और यह ठीक काम करता है:

db.yourCollectionName.aggregate([
    {
        $project: {
            "projectName": 1,
            "price": 1,
            "document": '$$ROOT'
        }
    },
    {
        $addFields: {
            "document.id": {
                $concat: ['$document.propertyId.prefix', '$document.propertyId.number']
            }
        }
    },
    {
        $match: {
            $and: [{
                $or: [{
                        "projectName": {
                            $regex: '.*' + "some stack test"
                        }
                    },

                    {
                        "document.id": {
                            $regex: '.*' + "a" + '.*',
                            $options: "7"
                        }
                    }
                ]
            }]

        }
    },
    {
        $replaceRoot: {
            newRoot: "$document"
        }
    }
])

तथ्य यह है कि आपको कोई परिणाम नहीं मिलता है शायद आपके अनुरोध पैरामीटर के कारण है। इसके अलावा "projectName" . कैसे हो सकता है? आपके "document.id" . के समान खोज पैरामीटर हैं क्या वे भी मेल खाते हैं?अपनी मैच पाइपलाइन फिर से जांचें:

{"projectName": {$regex: '.*' + req.query.search + '.*', $options: "i"}},       
{'document.id': {$regex: '.*' + req.query.search + '.*', $options: "i"}}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक mongodb $match के भीतर, फ़ील्ड EQUALING के बजाय MATCHING फ़ील्ड के लिए परीक्षण कैसे करें

  2. MongoMapper मॉडल के लिए हरोकू रेक कार्य अप्रारंभीकृत स्थिरांक

  3. सर्वर NodeJS पर Mongo में उपयोगकर्ता (या कस्टम-आधारित भूमिकाएँ) बनाना असंभव है

  4. स्क्रैपी और मोंगोडीबी के साथ वेब स्क्रैपिंग और क्रॉलिंग

  5. MongoDB संग्रह में सूची में प्रत्येक निर्देश के लिए खोज करता है