将 Small Parse ID 迁移到普通 MongoDB 的 ObjectID
Posted
技术标签:
【中文标题】将 Small Parse ID 迁移到普通 MongoDB 的 ObjectID【英文标题】:Migration of Small Parse IDs to normal MongoDB's ObjectIDs 【发布时间】:2018-03-14 11:27:59 【问题描述】:我正在使用 Parse Dashboard 来管理我的 ios 应用程序的用户。此外,我正在使用使用 MongoDB 数据库的外部 API。
我目前面临的问题是从 Parse Dashboard 创建的用户的 id 较小,而不是 MongoDB 的 ObjectID,而其他未过度解析的资源是由普通 ObjectID 生成的。
例如。 用户对象:
_id:"qVnyrGynJE",
user_name:"Aditya Raval"
文档对象:
_id:"507f191e810c19729de860ea",
doc_name:"Marksheet",
user:"qVnyrGynJE"
任务对象:
_id:"507f191e810c19729de860ea",
task_name:"Marksheet",
user:"qVnyrGynJE"
我还使用 Keystone.js 作为后端管理仪表板。所以基本上由于 KeyStone.js 内部的这种混合类型的 ID 关系被破坏并且 Keystone.js 崩溃了。
所以我想通过修复 Keystone.js 将所有现有的小 ID 迁移到普通的 MongoDB ObjectID 而不破坏关系或任何其他演练
【问题讨论】:
这不就是一个迁移id的更新脚本吗?类似***.com/questions/4973095/… 如何改变 MongoDB 中作为主键的字段的类型! 您可以遍历集合;当字符串删除文档的 id 并插入文档时检查 id 的类型。插入新文档后,您可以批量删除 id 类型为字符串的所有文档以删除旧记录。前在这里***.com/questions/4012855/… 【参考方案1】:你可以这样运行:
var users = db.Users.find();
for(var i = 0; i < users.length(); i++)
var oldId = users[i]._id;
delete users[i]._id;
db.Users.insert(users[i], function(err, newUser)
db.Documents.updateMany("user": oldId, $set: "user": newUser._id );
//Do this for all collections that need to be update.
);
);
db.Users.deleteMany(_id: $type: "string" );
【讨论】:
以上是关于将 Small Parse ID 迁移到普通 MongoDB 的 ObjectID的主要内容,如果未能解决你的问题,请参考以下文章
在 Heroku 迁移后访问上传到 Parse.com 的文件 [关闭]
将 Objective-C iOS 应用程序迁移到自托管 Parse-Server 的问题
如何在 Parse.com 中验证 deviceToken 的 GCM 发件人 ID
Parse Image + Parse httpRequest 替换——从 Parse Cloud Code 迁移到 Parse Server on Node (Heroku / AWS / DO)