gpt4 book ai didi

MongoDB : How do the stored objects are affected by model changes?

转载 作者:可可西里 更新时间:2023-11-01 09:13:50 25 4
gpt4 key购买 nike

我正在考虑迁移到 mongoDB,但我对这件事缺乏一些基本的了解。我的主要问题是“模型更改如何影响存储的对象?”。这是一个可以更好地理解我想知道的内容的场景:

  1. 我使用 first_name、last_name、email 属性创建了一个“用户”模型。
  2. 我在我的应用程序中创建了 25 个存储在 mongo 中的用户(所以他们存储为 {first_name: "xxx", last_name: "yyy", email: "zzz"})
  3. 我向“用户”模型添加了一个属性:用户名
  4. 我在我的应用程序中创建了 25 个新用户(所以他们存储为 {first_name: "xxx", last_name: "yyy", email: "zzz", username: "xyz"})
  5. 我从“User”模型中删除了“first_name”和“last_name”属性。
  6. 我更新了前 25 位用户中 5 位的电子邮件地址。

所以这是我的问题:

  1. 将“username”属性添加到“User”模型后,前 25 个对象发生了什么?他们在 BSON 定义中收到的“用户名”属性是否为空值?我的理解是他们只是没有受到感染。
  2. 当我从“User”模型中删除“first_name”和“last_name”属性时,现有的 50 个用户会发生什么情况?我猜答案与 #1 相同。
  3. 更新 10 条记录的电子邮件地址后,前 5 个会怎样?他们是否添加了“用户名”、删除了“名字”和“姓氏”并更新了电子邮件地址?或者只是更新了他们的电子邮件地址?

最佳答案

您的直觉是正确的。 MongoDB 要求您在应用程序中(即在数据库外部)创建和实现数据模型。我认为这是从 SQL 数据库切换时要克服的最大心理障碍之一。

所以回答你的问题

  1. 原来的 25 个用户对象不会自动接收“用户名”属性。您将需要手动更新现有用户以添加用户名或更新模型以处理不存在用户名的情况。

  2. 同上。您将需要手动更新现有记录以删除 first_name 和 last_name 属性,或者等到对象更新到不包含它们的 future 版本。

  3. 这取决于您如何进行更新。您可以通过替换整个记录或使用修饰符更改单个字段来更新。如果替换整个记录,则将保存模型的当前版本。如果直接修改“email”属性,则其他字段不会改变。

关于MongoDB : How do the stored objects are affected by model changes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com