是否可以使用 Python 中作为 ObjectId 的字符串更新 MongoDB 字符串字段
Is it possible to update MongoDB String field with a String that is an ObjectId in Python
所以我在 MongoDB 集合中有一个字符串数组字段,我想添加一个作为 ObjectId 的字符串。它被添加但被保存为 ObjectId 而不是字符串。
users_collection.update_one({
"_id": ObjectId(user['_id'])
}, {
"$push": {
"profile.surveys.completedInTimeSurveyIDs": "5dc71ee34283e125a9edc96b"
}
})
在集合文档中始终保存为:
但我希望它是:
可能您已经在您的框架中定义了一个模式,并且您的框架知道您的路径引用的值的类型(此处 profile.surveys.completedInTimeSurveyIDs.$
将被指定为 oid
,因此您的字符串是如此投射)
备选方案是:
- 根据您的规范(作为字符串)设计架构
- 绕过框架,直接使用驱动程序(如果有例外和可能的话)
- 考虑真正存储一个 ObjectId 并在检索时调整您的代码(如果需要,使用 str())
我建议你做后者(如果你要聚合东西,查找,甚至填充,或任何其他涉及你的数组元素的工作,你可能需要一个 ObjectId)
所以我在 MongoDB 集合中有一个字符串数组字段,我想添加一个作为 ObjectId 的字符串。它被添加但被保存为 ObjectId 而不是字符串。
users_collection.update_one({
"_id": ObjectId(user['_id'])
}, {
"$push": {
"profile.surveys.completedInTimeSurveyIDs": "5dc71ee34283e125a9edc96b"
}
})
在集合文档中始终保存为:
但我希望它是:
可能您已经在您的框架中定义了一个模式,并且您的框架知道您的路径引用的值的类型(此处 profile.surveys.completedInTimeSurveyIDs.$
将被指定为 oid
,因此您的字符串是如此投射)
备选方案是:
- 根据您的规范(作为字符串)设计架构
- 绕过框架,直接使用驱动程序(如果有例外和可能的话)
- 考虑真正存储一个 ObjectId 并在检索时调整您的代码(如果需要,使用 str())
我建议你做后者(如果你要聚合东西,查找,甚至填充,或任何其他涉及你的数组元素的工作,你可能需要一个 ObjectId)