如何在mongosh中为数组内的子文档插入ObjectId
在mongosh中为数组子文档设置ObjectId类型的_id
方法1:自动生成新的ObjectId
直接调用ObjectId()无参构造函数,MongoDB会自动生成一个全新的ObjectId:
db.polls.insert({ "pollListOfOptions": [ { "sub_array": [ { "name": "test" } ], "_id": ObjectId() // 自动生成新的ObjectId类型值 } ] })
方法2:将已有字符串ID转为ObjectId类型
如果你已经有一个合法的24位十六进制字符串格式的ObjectId(比如示例中的"6421569b123123adabc696399"),可以把字符串作为参数传入ObjectId()构造函数,将其转换为ObjectId类型:
db.polls.insert({ "pollListOfOptions": [ { "sub_array": [ { "name": "test" } ], "_id": ObjectId("6421569b123123adabc696399") // 把字符串转为ObjectId类型 } ] })
注意事项
- 传入
ObjectId()的字符串必须是合法的24位十六进制字符,否则会触发格式错误。 - 子文档的
_id无需全局唯一,但建议在所属数组内保持唯一性,避免后续更新、查询操作出现冲突。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

