2013-04-16 83 views
0

插入如何在文檔中更新字段如果該字段已經存在,否則更新字段的值? $在已存在字段的文檔上設置更新。只是發現很多提示如何將新字段插入到整個集合中,但如何在文檔基礎上解決此問題?更新或MongoDB中

的問候, 克里斯

+1

你似乎會問多餘的東西 - 如果字段存在,我怎麼更新場?否則,如果它不存在,我該如何更新字段的值?你只要使用$ set就可以了,這個字段是否已經存在於文檔中並不重要。 –

+0

行,行!以下是帶有相同問題的ppl示例(我正在運行Moped Ruby驅動程序): 'irb> users.find.one => {「username」=>「kamatei」,「_id」=>「a407ebb3d89abd380ddda074cf03b9e4」 }' 我需要的是: '{ 「用戶名」=> 「kamatei」, 「年齡」=> 「26」, 「_id」=> 「a407ebb3d89abd380ddda074cf03b9e4」}'通過$組 更新: 'users.find(_id: 「a407ebb3d89abd380ddda074cf03b9e4」)。更新(:$ SET => {年齡:26})' ......與 結束'{ 「_id」=> 「a407ebb3d89abd380ddda074cf03b9e4」, 「年齡」= > 26, 「用戶名」=> 「kamatei」}' 非常感謝您的幫助! – ctp

+0

你可能要接受的答案下面是總結了。 –

回答

3

$set將添加指定的一個或多個字段,如果他們是否已經存在沒有這個文件中存在或更換指定的字段(S)的現有價值他們。

2

使用upsert標誌的更新語句。

+1

UPSERT標誌是否說創建文檔,如果沒有匹配更新。與原始問題無關。 –