MongoDB 更新字段或插入新文档

MongoDB update field or upsert new document

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

这是我卡住的地方(productshopId 是变量):

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

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

你不应该使用 the positional operator with upsert:

Do not use the positional operator $ with upsert operations because inserts will use the $ as a field name in the inserted document.

看来你需要多次访问数据库