mongodb:对变量的更新查询更改另一个变量是一个数组

时间:2017-03-28 23:03:31

标签: mongodb mongodb-query mongodb-update

通过终端在aws ec2实例中托管的现有mongodb数据库中执行此操作:

db.users.update({},{ $inc: { point_total: 100 } }, {multi:true})

除了将所有用户的变量增加100之外,还有同一集合中另一个变量(历史记录)的条目更改。

history: [{
    c_id: String,
    created_at: {type: Date, default: Date.now },
    reason: String, //Received, Sent
    amount: String
}]

不需要的更改包括历史记录中的原因变量已从各种用户的“已接收”更改为“已发送”。

由于我的查询并未解决“历史”问题,是否有关于导致这种情况的想法?

1 个答案:

答案 0 :(得分:2)

来自$ inc运营商文档:

  

$ inc运算符按指定值递增字段,其格式如下:{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }

     

行为

     

如果该字段不存在,$ inc将创建该字段并将该字段设置为指定值。在具有空值的字段上使用$ inc运算符将生成错误。 $ inc是单个文档中的原子操作。

如您所见,该定义指出$ inc运算符仅增加指定的字段。对可能的副作用和更改非指定字段没有任何评论。

这意味着还有另一个更新history字段的查询(或查询)。可能你的应用程序或某些服务正在这样做。