2014-02-26 38 views
0

假設你有2個文件的集合:得到與領域本文件(沒有值)等文件

{ 'name' : 'lutin1', 'mood' : 'good', 'last_say' : 'hello you' } 
{ 'name' : 'lutin2', 'mood' : 'great' 'title' : 'mayor' } 

我們使用MongoDB的偉大無模式功能。 但如果我需要顯示的內容:

for user in users: 
    print("{n} said : {s}".format(n=user['name'], s=user['last_say'])) 

將給予「lutin2」 一個辦法是每次測試,如果關鍵是存在「無鑰匙系統錯誤」,但如果您的文檔有更多的領域,它大大增加了你的代碼。

最簡單的解決方案是對於每個文檔,在集合中找到所有可能的字段。 在這種情況下,當特定字段不存在時(如同任何SQL DB工作一樣),所有文檔都會有4個字段(名稱,心情,標題,last_say),並且爲null值 確實mongoDB提供了這樣的選項嗎?

如果不是,你會如何處理這個問題?

thx!

回答

1

您不需要爲每個字段存儲空值。使用dict.get來處理這種情況。作爲第二個參數傳遞默認值。

如何使你的代碼應該是這樣的:

for user in users: 
    print("{n} said : {s}".format(n=user['name'], s=user.get('last_say', 'Nothing!')))