2012-11-26 36 views
0

我對Python很陌生。在我的腳本中,我編寫了更新MongoDB數據庫的代碼。更新命令,以從python返回mongodb數據庫返回查詢結果(例如,布爾值或整數)

def mongoInsert(userData, collection): 
    mconn = Connection(MONGODB_HOST,MONGODB_PORT) 
    mdb = mconn[MONGODB_DBNAME] 
    col = mdb[collection] 

    #The below codeis used to upsert the data in MongoDB. 
    for user in userData: 
     print user 
     col.update({'id': user[0]}, {'$set':user}, True) 
return 

其中用戶數據是一個列表,

userData = [] 

當運行命令蟒使用油灰script_name.py;腳本運行時沒有任何錯誤或異常。但是當我看到嘗試來查看MongoDB中的數據時,數據庫中沒有添加任何數據(我不確定,可能是數據已添加,但因爲我是新來的,所以我無法看到它)。所以我現在想,如果有任何的方式來獲得更新命令(更新命令如布爾或整數任何回報的類型)後更新數據庫中的行,我會使用它像

success = col.update({'id': user[0]}, {'$set':user}, True) 
print success 

但它總是打印沒有成功的價值。那麼是否有任何方法來檢查數據是否被添加,修改上面的代碼。

+0

此更新命令不起作用。它運行時不會產生錯誤和異常,但它不會更新記錄,所以現在我發佈另一個問題來獲取正確的更新命令,其鏈接將放在此處。 –

回答

1

我想這與線

col.update({'id': user[0]}, {'$set': user}, True) 

其中user [0]爲用戶採集的整個文檔,您試圖更新文檔其中id是整個文檔。你應該寫水木清華這樣的:

col.update({'_id': user[0]['_id']}, {'$set': user}, True) 

而且我不明白什麼是你想用部分{'$set': user}做。閱讀thisthis

要檢查你的查詢是確定你應該通過關鍵字參數safe=True到更新方法:

success = col.update({'id': user[0]}, {'$set': user}, True, safe=True) 
print success 

很抱歉,如果我沒有正確地理解您的問題。

+0

感謝您的幫助,但對不起,這不是幫助我 –

+0

你解決了你的問題嗎? – alexvassel

+0

是和不是。是的,因爲我找到了一種方法來檢查update命令是否成功完成,並且沒有,因爲我的問題現在已更改,上述更新命令不起作用。所以現在我發佈另一個問題來獲得正確的更新命令。 –