2017-10-03 8 views
10

私は、私のiOSアプリケーションのユーザー管理にパースダッシュボードを使用しています。また、私はMongoDBデータベースを使用している外部APIを使用しています。小さなパースIDを通常のMongoDBのObjectIDにマイグレーション

Parse Dashboardから作成されたユーザーがMongoDBのObjectIDの代わりに小さなIDを持ち、オーバー解析されていない他のリソースが通常のObjectIDによって生成されています。

例えば、 ユーザオブジェクト:

{ 
_id:"qVnyrGynJE", 
user_name:"Aditya Raval" 
} 

ドキュメントオブジェクト:

{ 
_id:"507f191e810c19729de860ea", 
doc_name:"Marksheet", 
user:"qVnyrGynJE" 
} 

Taskオブジェクト:私もバックエンド管理Dashboard.SoとしてKeystone.jsを使用しています

{ 
_id:"507f191e810c19729de860ea", 
task_name:"Marksheet", 
user:"qVnyrGynJE" 
} 

基本的にはKの中のこのような種類のID関係のためですeyStone.jsが壊れて、Keystone.jsがクラッシュします。

だから私はあなたがこのような何かを実行することができますKeystone.js

+1

ISNがこれはidsを移行するための更新スクリプトですか?何かhttps://stackoverflow.com/questions/4973095/mongodb-how-to-change-the-type-of-a-field – Veeram

+0

MongoDBの主キーであるフィールドのタイプを変更する方法! –

+1

コレクションを反復処理することができます;文字列がドキュメントのIDを削除してドキュメントを挿入するときに、IDのタイプをチェックします。新しい文書の挿入が完了したら、idの型が文字列であるすべての文書を一括削除して古いレコードを削除することができます。 ex https://stackoverflow.com/questions/4012855/how-update-the-id-of-one-mongodb-document – Veeram

答えて

1

を固定することにより関係やその他のウォークスルーに壊すことなく、通常のMongoDBのObjectIDにすべての私の既存の小さなIDを移行したい:「

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" }}); 
関連する問題