我正尝试减少文档中的字段并设置默认值(如果不存在)。我的查询如下:
usersCollection.findOneAndUpdate(
{_id: id},
{
$inc: {quota: -1},
$setOnInsert: {quota: 100}
},
{
upsert: true,
returnOriginal: false
}
)
但是此查询给出以下错误:
更新路径“ quota”会在“ quota”处产生冲突
如果我不使用$setOnInsert: {quota: 100}
,则它可以工作,但会从我不希望的0开始递减。我的目标是在这种情况下设置默认值(100),并对每个查询递减。
1个查询可能吗?我到处搜寻,但找不到任何有帮助的地方。
答案 0 :(得分:0)
我不认为这在单个查询中是可能的,因为它包含一个原子操作($inc
),并且在同一字段上包含两个潜在的操作。 (这将解释“ quota”错误消息。)
您可以对$exists
运算符使用两个不同的查询,以确定quota
字段应如何设置