我正在尝试更新文档中的字段(如果存在),如果不存在,我想更新整个文档。是否可以不运行两个查询,一个用于搜索文档,另一个用于更新/插入?
这就是我要坚持的地方(product
和shopId
是变量):
db.collection.updateOne(
{ "ref": product.ref, "sizesData.shop": shopId },
{ "$set": { "sizesData.$": { "$max": { "mostRecentPrice": product.price } } },
{ upsert: true }, },
)
如果文档存在,我正在尝试更新mostRecentPrice
子文档中的sizesData
。但是,如果文档不存在,我想创建一个全新的文档。有可能在单个查询中吗?谢谢。
答案 0 :(得分:1)
您不应使用the positional operator with upsert:
请勿将位置运算符$与upsert操作一起使用,因为插入操作会将$用作插入文档中的字段名称。
所以您似乎需要多次访问数据库