अगली बार कृपया अपने दस्तावेज़ का एक नमूना जोड़ें ताकि लोग आपकी समस्या का पुनरुत्पादन कर सकें। यह कहकर कि मैं नहीं देखता कि आपकी समस्या कहां है। मैंने आपके उपयोगकेस को पुन:पेश करने के लिए कुछ डेटा बनाया है। इसलिए मैंने निम्नलिखित दस्तावेज़ जोड़ा:
{
"_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"}}