2017-02-18 71 views
0

使用MongoDB,我有一個history集合,其中包含多個文檔。當initiatied,他們是這樣的:使用PyMongo將東西添加到MongoDB文檔中

{'_id': ObjectId('58a71211545fc61fd8b2f420'), 
'category': 'blue', 
'last_update': datetime.datetime(2017, 2, 14, 0, 1), 
'timeline': [ 
    { 
    'score': 0, 
    'when': datetime.datetime(2017, 2, 14, 0, 1) 
    } 
] 
} 

{'_id': ObjectId('58a71211545fc61fd8b2f421'), 
'category': 'red', 
'last_update': datetime.datetime(2017, 2, 14, 0, 1), 
'timeline': [ 
    { 
    'score': 0, 
    'when': datetime.datetime(2017, 2, 14, 0, 1) 
    } 
] 
} 

使用PyMongo,我想查詢,增加了東西到一個文件(例如,與{'category' : 'blue'}文檔),在timeline元素,這樣的:

{'_id': ObjectId('58a71211545fc61fd8b2f420'), 
'category': 'blue', 
'timeline': [ 
    { 
    'score': 0, 
    'when': datetime.datetime(2017, 2, 14, 0, 1) 
    }, 
    { 
    'score': 10, 
    'when': datetime.datetime(2017, 2, 14, 0, 2) 
    }, 
    { 
    'score': 20, 
    'when': datetime.datetime(2017, 2, 14, 0, 3) 
    } 
] 
} 

我發現(與collection.update_one())唯一刪除了以前的內容:

{'_id': ObjectId('58a71211545fc61fd8b2f420'), 
'category': 'blue', 
'timeline': [ 
    { 
    'score': 10, 
    'when': datetime.datetime(2017, 2, 14, 0, 2) 
    }, 
    { 
    'score': 20, 
    'when': datetime.datetime(2017, 2, 14, 0, 3) 
    } 
] 
} 

感謝

+0

你能告訴你如何使用'update_one'嗎? – Veeram

+0

'db.my_collection.update_one({'category':'blue'},{'$ set':{'timeline':[''datetime.datetime.now() ''score':30,' }]}}}' –

+1

你可以嘗試使用$ push而不是$ set嗎?推式運算符爲數組並且設置爲字段。 – Veeram

回答

0

使用the update operator $push

db.my_collection.update_one({'category': 'blue'}, { 
    '$push': {'timeline': {'score': 30, 'when': datetime.datetime.now()}}}