微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Legacy Realm JSON 数据迁移到 MongoDB Realm (Atlas) - 关系问题

如何解决如何将 Legacy Realm JSON 数据迁移到 MongoDB Realm (Atlas) - 关系问题

我正在尝试从 Legacy Realm 迁移到 MongoDB Realm,但在迁移具有关系的数据时遇到问题。

示例架构:

{
  name: 'Location',primaryKey: '_id',properties: {
    _id: 'string',_partition: 'string?',Name: 'string',WorkTime: 'WorkTime[]',},}

{
  name: 'WorkTime',Day: 'string?',Open: 'string?',Closed: 'string?',}

我应该以什么格式将json推送到MongoDB Atlas,以便与相关数据链接

我尝试从 WorkTime 集合中添加 ID(带和不带分区字符串),遵循 https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/

示例 JSON:

{  
   "_id":"adaaade7-2b4f-5342-92a1-f00857a61253"
   "_partition":"TestPartition","Name":"Test","WorkTime":[
      {
         "_partition":"TestPartition","_id":"1229ac83-f390-00e3-14a7-ffa9f8eb36e4"
      },{
         "_partition":"TestPartition","_id":"9af60ff2-064b-3f09-6621-e7f949b003be"
      },"_id":"04c33a8c-5e59-45ab-fbf8-e70446324475"
      },],}

当我尝试从领域 (realm.objects('Location')) 获取数据时,我什么也没得到。仅当 WorkTime 为空时才会显示位置。

我还尝试传递整个 WorkTime 对象,而不是 Id,但随后它创建了完整对象的副本。

解决方法

我想通了,引用的对象必须是Id字符串,就像示例中那样。 https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/

所以,如果你有

{  
   "_id":"adaaade7-2b4f-5342-92a1-f00857a61253"
   "_partition":"TestPartition","Test": {"_id":"9af60ff2-064b-3f09-6621-e7f949b003be","_partition":"TestPartition"},"WorkTime":[
      {
         "_partition":"TestPartition","_id":"1229ac83-f390-00e3-14a7-ffa9f8eb36e4"
      },],}

应该转换为

{  
   "_id":"adaaade7-2b4f-5342-92a1-f00857a61253"
   "_partition":"TestPartition","Test": "9af60ff2-064b-3f09-6621-e7f949b003be","WorkTime":[
     "1229ac83-f390-00e3-14a7-ffa9f8eb36e4"
   ],}

只留下 Id 作为字符串。

我递归遍历对象,删除嵌套对象的非 id 属性,用 _id 替换 Id 并添加分区键。之后,您必须用字符串 {"_id":"9af60ff2-064b-3f09-6621-e7f949b003be"} -> 9af60ff2-064b-3f09-6621-e7f949b003be 替换嵌套对象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。