2011-08-05 126 views
1

嵌入的文檔到現有文件我有這樣的結構的文件:插入MongoDB中

Product (root) 
    Document1 (embedded) 
    Document2 
    ... 
    DocumentN 
     Part1 (embedded) 
     Part2 
     ... 
     PartN 

我有波蘇斯映射到結構。有一點,用戶創建一個產品,這是一個非常有用的保存到數據庫的產品。然後用戶創建一個文檔,之後產品實體再次保存到數據庫中(據我所知,它應該執行更新,因爲產品實體已經存在於數據庫中)。但是,當我在產品內部創建第N個文檔並嘗試保存該文檔時,出現錯誤,我試圖上傳太多(最大上傳大小限制爲16MB)。

如何更新產品文檔,以便僅將新文檔插入(上載)到產品中,而不是再次將整個產品上傳到數據庫?

謝謝!

+0

你可以請張貼一些你已經試過的代碼 – atbebtg

回答

0

您需要使用upserts。你通過更新來做到這一點,並指定它應該是一個upsert。這將允許您設置/更新特定屬性而不指定整個對象。

假設你的產品有您可以使用它來識別要更新的產品一個產品id字段:

db.products.update({ "productId":1234 }, { $set: { document1: { part1: "foo" } } }, true); 

最後一個參數(真)表示這是一個更新插入。您的驅動程序可能會用稍微不同的方式指示upsert。