MongoDB更新字段或更新新文档

时间:2019-04-11 17:15:28

标签: mongodb upsert

我正在尝试更新文档中的字段(如果存在),如果不存在,我想更新整个文档。是否可以不运行两个查询,一个用于搜索文档,另一个用于更新/插入?

这就是我要坚持的地方(productshopId是变量):

db.collection.updateOne(
  { "ref": product.ref, "sizesData.shop": shopId },
  { "$set": { "sizesData.$": { "$max": { "mostRecentPrice": product.price } } },
  { upsert: true }, },
)

如果文档存在,我正在尝试更新mostRecentPrice子文档中的sizesData。但是,如果文档不存在,我想创建一个全新的文档。有可能在单个查询中吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您不应使用the positional operator with upsert

  

请勿将位置运算符$与upsert操作一起使用,因为插入操作会将$用作插入文档中的字段名称。

所以您似乎需要多次访问数据库