ObjectId 转换范围
MongoDB runtime 默认启用 ObjectId 自动转换。它让查询和写入可以接收常见的标识符输入,同时确保写入 MongoDB 的值是实际的 ObjectId。
会转换什么
monSQLize 判断的是运行时值形态,不是依赖发布号。已经是 ObjectId 的值会直接复用;来自其他 BSON 实现但看起来像 ObjectId 的值,会通过十六进制字符串重建。
字段范围
自动转换会覆盖标准化后的查询条件和写入文档。只要某个 24 位十六进制字符串所在路径没有被排除,就可能被转换。
如果你的业务字段只是“长得像 ObjectId”的字符串,要把这些字段排除:
只有在你希望所有标识符都按传入值原样发送时,才使用 autoConvertObjectId: false。
查询示例
这两个示例都会在发送给 MongoDB 前标准化为 ObjectId。
写入示例
插入和更新 payload 内的 ObjectId-like 值会在写入前标准化。
Extended JSON 输入
Extended JSON 是传输格式,不是 monSQLize 操作推荐的内存形态。不要在想表达 _id 是 ObjectId 时直接传入这种对象:
应先解析 Extended JSON,或直接创建 ObjectId: