
# 写入/更新命令
- 用户做了大量写入/更新操作后，实际数据量可能没有多大变化，但磁盘空间使用量增加了。是因为无论是写入、更新还是删除，以及索引插入和删除等操作，在后台实际上都会转成写入。因为底层的存储引擎（WiredTiger和RocksDB）采用都是appendOnly机制。只有当存储引擎内部数据状态满足一定条件后，会触发内部的compaction操作，进行数据压缩，进而释放磁盘空间。
- 写入/更新操作会涉及到备节点同步，可以指定writeConcern级别。详情请参见[Write Concern](https://docs.mongodb.com/manual/reference/write-concern/)。
#### 注意事项
- update和upsert：upsert内部会先做一次查询，如果查询不存在则插入，否则执行update。如果业务上场景可以进行相关记录，则避免使用upsert命令，建议直接使用update或insert。
- update也需要匹配索引。
  - 避免COLLSCAN全表扫描。
  
  - 查询条件和索引字段匹配有顺序性。
   
- insert/update命令中涉及的文档，最大不能超过16MB。
![](https://support.huaweicloud.com/devg-dds/public_sys-resources/caution_3.0-zh-cn.png)
使用写入/更新命令修改业务数据会造成业务数据变更。
