将嵌入的文档插入MongoDB中的现有文档

时间:2011-08-05 12:58:02

标签: c# mongodb mongodb-.net-driver

我的文档结构如下:

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

我有POCO映射到结构。有一次,用户创建了一个产品,该产品可以立即保存到数据库中。然后,用户创建一个文档,之后将Product实体再次保存到数据库中(据我所知,它应该进行更新,因为db中已经存在产品实体)。但是,当我在产品中创建第N个文档并尝试保存它时,我收到的错误是我尝试上传太多(最大上传大小限制为16MB)。

如何更新产品文档,以便仅将新文档插入(上传)到产品中,而不是将整个产品再次上传到数据库?

谢谢!

1 个答案:

答案 0 :(得分:0)

你需要使用upserts。您可以通过更新并指定它应该是一个upsert来完成此操作。这将允许您设置/更新特定属性,而无需指定整个对象。

假设您的产品有一个productId字段,您将用它来识别要更新的产品:

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

最后一个参数(true)表示这是一个upsert。您的驱动程序可能有一种略微不同的方式来指示upsert。