2009-07-17 17 views
15

में अद्यतन कर रहा है नेस्ट दस्तावेजों मैं इस तरह के डेटा संरचना कुछ है कहो। प्रारंभ में, हालांकि, ऐसा किया जाएगा:MongoDB

collection.update({'_id': myid}, {$set: {'anotherdoc.something': 'somenewval'}); 

हालांकि, यह गलत लगता है। यह वहां कुछ डेटा डालता है, लेकिन यह एक अजीब तरीके से ऐसा करता है। यह, इस मामले में, इस तरह खत्म हो जाएगा:

[ 
    { 
     'name': 'test', 
     'anotherdoc': { 
      'something': 'someval', 
      'somenum': 1 
     } 
    }, 
    ['anotherdoc.something', 'someval'] 
] 

बेशक, मैं जो खोज रहा था वह नहीं।

उत्तर

14

निम्नलिखित मेरे लिए मोंगो खोल से काम करता है - इसलिए मुझे यकीन नहीं है कि आपके लिए क्या हुआ। इसे आज़माएं और देखें कि यह काम करता है या नहीं? यदि ऐसा है तो मैं कुछ समस्याग्रस्त होने के मामले में नवीनतम मोंगो कोड को पकड़ूंगा।

x = { 'name': 'test', anotherdoc: { 'something': 'someval', somenum : 1 } } 
> x 
{"name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}} 
> collection = db.foo; 
test.foo 
> collection.insert(x) 
> collection.find() 
{"_id" : ObjectId("4a61b6711591f41f0f1bc5ff") , "name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}} 
> x 
{"name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}} 
> x._id 
> x = collection.findOne() 
{"_id" : ObjectId("4a61b6711591f41f0f1bc5ff") , "name" : "test" , "anotherdoc" : {"something" : "someval" , "somenum" : 1}} 
> collection.update({'_id': x._id}, {$set: {'anotherdoc.something': 'somenewval'}}) 
> collection.find() 
{"_id" : ObjectId("4a61b6711591f41f0f1bc5ff") , "name" : "test" , "anotherdoc" : {"somenum" : 1 , "something" : "somenewval"}} 
> 

जैसा ऊपर बताया गया है, मोंगोडीबी मंच शायद तेजी से देखे जा सकते हैं (या आईआरसी आज़माएं)।

+0

एचएम, सच्चाई से मैं इस परीक्षण को पायथन में कर रहा था, बल्कि दुभाषिया में। यदि यह दुभाषिया के साथ काम करता है तो समस्या को इसके कार्यान्वयन में पाइथन में रखना चाहिए। मैं मोंगो डीबी मंचों पर आऊंगा यदि मैं अभी भी इसे काम नहीं कर पा रहा हूं। – defrex

+1

क्या होगा यदि 'anotherdoc.something' एक सरणी प्रकार था, तो मैं उस पर एक और तत्व कैसे धक्का दूंगा? – Val