MongoDB增/减或增补

时间:2019-03-23 13:57:16

标签: node.js mongodb

我正尝试减少文档中的字段并设置默认值(如果不存在)。我的查询如下:

 usersCollection.findOneAndUpdate(
    {_id: id},
    {
        $inc: {quota: -1},
        $setOnInsert: {quota: 100}
    },
    {
        upsert: true,
        returnOriginal: false
    }
)

但是此查询给出以下错误:

  

更新路径“ quota”会在“ quota”处产生冲突

如果我不使用$setOnInsert: {quota: 100},则它可以工作,但会从我不希望的0开始递减。我的目标是在这种情况下设置默认值(100),并对每个查询递减。 1个查询可能吗?我到处搜寻,但找不到任何有帮助的地方。

1 个答案:

答案 0 :(得分:0)

我不认为这在单个查询中是可能的,因为它包含一个原子操作($inc),并且在同一字段上包含两个潜在的操作。 (这将解释“ quota”错误消息。)

您可以对$exists运算符使用两个不同的查询,以确定quota字段应如何设置