是否可以使用 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)