如何解决如何将 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 举报,一经查实,本站将立刻删除。