2013-02-27 131 views
12

के साथ कुल $ परियोजना जोड़ें फ़ील्ड क्या मैं किसी भी तरह स्थिर (गणना नहीं) मान के साथ कस्टम फ़ील्ड जोड़ सकता हूं?मोंगोडीबी: स्थिर मूल्य

मैं भेजने से पहले वस्तुओं को तैयार करना चाहता हूं और मुझे आंतरिक जानकारी के साथ कुछ फ़ील्ड को हटाने और कुछ इकाई आईडी के साथ फ़ील्ड जोड़ने की आवश्यकता है।

उदाहरण के लिए मैं इस

{_id: ObjectId(...), data: {...}} 

तरह की वस्तुओं के साथ संग्रह "परीक्षण" है और मैं

{data: {...}, entity_id: 54} 

तो मैं कैसे ENTITY_ID जोड़ सकते हैं करने के लिए इसे बदलने की आवश्यकता: में परिणाम पर पाशन के बिना 54 मेरा कोड?

db.test.aggregate({ $project: {_id: 0, data: 1, entity_id: ? } }) 

धन्यवाद

+0

db.test.aggregate ({$ प्रोजेक्ट: {_id: 0, डेटा: 1, entity_id: {$ add: [54]}}}) http://www.codefari.com/2015/11/project -in-mongodb-with-example.html – Singh

उत्तर

18

मैं यह वास्तव में गूंगा लग सकता है पता है, लेकिन आप "की गणना करने के लिए" आप क्या जरूरत है एक "कोई-op" अभिव्यक्ति का उपयोग कर सकते हैं।

उदाहरण:

db.test.aggregate({ $project : {_id:0, data:1, entity_id: {$add: [54]} } }) 

वास्तव में उपयोग के इस मामले में एक प्रस्ताव $ शाब्दिक ऑपरेटर था लेकिन यह अभी तक लागू नहीं किया गया, तो आप इसे here के लिए मतदान कर सकते हैं।

+0

धन्यवाद, $ literal वास्तव में सहायक हो सकता है। आपके उदाहरण के लिए थोड़ा फिक्स - entity_id: {$ add: [54]} – redexp

+0

दाएं - मैं थोड़ा अलग उदाहरण के बारे में सोच रहा था, बेशक आपको 0 जोड़ने की आवश्यकता नहीं है :) –

32

ध्यान दें कि मोंगो 2.6 में $ literal लागू किया गया था। तो अब आप बस लिख सकते हैं:

db.test.aggregate(
    {$project: {_id: 0, data: 1, entity_id: {$literal: 54}}}) 

$literal देखें।

+0

उपरोक्त मुद्दे के लिए बिल्कुल सही समाधान, वास्तव में पूरी तरह से मदद करें । –