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

本文关键字:文档 插入 MongoDB | 更新日期: 2023-09-27 18:04:49

我有一个结构像这样的文档:

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

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

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

谢谢!

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

您需要使用upserts。您可以通过更新并指定它应该是一个更新来实现这一点。这将允许您设置/更新特定的属性,而无需指定整个对象。

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

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

最后一个参数(true)表明这是一个反转。您的驱动程序可能有一个稍微不同的方式来指示上置