mongodb:对变量的更新查询对另一个变量进行更改,该变量为';这是一个数组

mongodb:对变量的更新查询对另一个变量进行更改,该变量为';这是一个数组,mongodb,mongodb-query,mongodb-update,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, //

通过终端在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
}]
不需要的更改包括历史记录中的原因变量对于不同的用户从“已接收”更改为“已发送”


由于我的问题不是针对“历史”,有没有关于这是什么原因的想法

来自$inc运营商文档:

$inc运算符按指定的值递增字段,其形式如下:
{$inc:{:,:,…}

行为

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

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


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

来自$inc操作员文档:

$inc运算符按指定的值递增字段,其形式如下:
{$inc:{:,:,…}

行为

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

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


这意味着还有另一个查询(或多个查询)更新
历史
字段。您的应用程序或某些服务可能正在执行此操作。

您的更新查询与历史记录字段中的更改无关。你也没有说明你在历史上发生了什么样的变化。所以不可能猜到是什么happened@SergeyBerezovskiy-不需要的更改包括历史记录中的原因变量已从“已接收”更改为“已发送”。您的更新查询与历史记录字段中的更改无关。你也没有说明你在历史上发生了什么样的变化。所以不可能猜到是什么happened@SergeyBerezovskiy-不需要的更改包括历史记录中的原因变量对于不同的用户从“已接收”更改为“已发送”。是的,我已经阅读了有关查询的文档。我只在终端中手动运行了上面的一个查询。然后我重新启动了nodejs服务器的PM2。不知道这是不是原因。或者如果“{multi:true}”是问题的一部分。我还想知道是否存在我不了解数组中子文档属性的问题。是的,我已经阅读了有关查询的文档。我只在终端中手动运行了上面的一个查询。然后我重新启动了nodejs服务器的PM2。不知道这是不是原因。或者如果“{multi:true}”是问题的一部分。我还想知道是否存在我不了解数组中子文档属性的问题。