पर मोंगोडीबी एकत्रीकरण प्रोजेक्ट स्ट्रिंग मैं एक हेक्साडेसिमल स्ट्रिंग को समेकन क्वेरी में इसके समकक्ष ऑब्जेक्ट आईडी में परिवर्तित करने का प्रयास कर रहा हूं। या तो विधि का उपयोग करऑब्जेक्ट आईडी
db.omvas.aggregate([
{$project:{
EID:{$let: {
vars: {
id: "$EID"
},
in: ObjectId("$$id")
}},
}
},
{$group:{
_id:"$EID"
}
}
]);
और
db.omvas.aggregate([
{$project:{
EID: ObjectId("$EID")
}
},
{$group:{
_id:"$EID"
}
}
]);
मैं त्रुटि मिलती रहती है "लंबाई त्रुटि::: अमान्य ऑब्जेक्ट आईडी" मैं दो अलग अलग तरीकों की कोशिश की। मैंने समेकन चर के स्थान पर एक शाब्दिक स्ट्रिंग जोड़ने का परीक्षण किया और मुझे उचित ऑब्जेक्ट आईडी के साथ परिणाम मिला। ऐसा लगता है कि स्ट्रिंग मान को मोंगो के ऑब्जेक्टआईडी फ़ंक्शन के माध्यम से पारित नहीं किया जा रहा है, बल्कि परिवर्तनीय नाम को शाब्दिक स्ट्रिंग के रूप में पारित किया जा रहा है।
किसी को भी कोई विचार है यदि मैं पूरा करने की कोशिश कर रहा हूं तो संभव है? क्या कोई जादू है जो मुझे याद आ रही है?
धन्यवाद, यह सही समझ में आता है। यह विशेष क्वेरी एक रिपोर्टिंग वर्कफ़्लो में केवल एक चरण है। ऑब्जेक्टआईडी आवश्यक था क्योंकि इसे पाइपलाइन से आगे प्रश्नों द्वारा उपयोग किया जा रहा है। मैं पुनर्विचार कर रहा हूं कि वे अब कैसे काम करते हैं और सोचते हैं कि मेरे पास उन्हें निष्पादित करने का एक बेहतर तरीका है। – StevenWarren
मेरे मामले में मैं एक '$ लुकअप' करना चाहता हूं जहां स्थानीय क्षेत्र 'ऑब्जेक्ट आईडी' का एक स्ट्रिंग प्रतिनिधित्व है और विदेशी क्षेत्र वास्तविक 'ऑब्जेक्ट आईडी' है। कोई विचार अगर यह संभव है w/MongoDB 3.2? – Madbreaks
इसके आस-पास एक तरीका एक स्क्रिप्ट लिखना होगा जो संग्रह में दस्तावेज़ों के लिए ऑब्जेक्ट आईडी के रूप में आईडी वाला एक नया फ़ील्ड जोड़ता है। फिर नए क्षेत्र का उपयोग कर $ लुकअप करें। –