आप इसे केवल एकत्रीकरण ढांचे के साथ कर सकते हैं, नियमित खोज के साथ नहीं।
db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
ध्यान दें कि यह किसी भी अनुक्रमणिका का उपयोग करने में सक्षम नहीं होगा, क्योंकि MongoDB (अभी तक) में गणना किए गए मानों पर अनुक्रमणिका के लिए कोई समर्थन नहीं है।
यदि आपके पास field1
. पर एक अनुक्रमणिका है और आप जानते हैं कि आप कितने वर्णों की अपेक्षा करते हैं कि फ़ील्ड 1 value
में योगदान देगा आप इस तरह से इस एकत्रीकरण के प्रदर्शन में सुधार कर सकते हैं:
db.coll.aggregate({$match:{field1:/^val/}},
{$project:{newField:{$concat:["$field1","$field2"]}}},
{$match:{newField:"value"}}
);
जहां val
"मान" स्ट्रिंग का पहला भाग है (आपको field1
के न्यूनतम संभव मान से अधिक वर्णों की तुलना नहीं करनी चाहिए हालांकि।
संपादित करें संस्करण 3.6 के अनुसार आप इसे $expr
. का उपयोग करके खोज में कर सकते हैं अभिव्यक्ति:
db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})