sql >> データベース >  >> NoSQL >> MongoDB

MongoDBで_idを削除し、主キーとして別のフィールドに置き換えるにはどうすればよいですか?

    mongodbでは、各ドキュメントは一意である必要があるため、idとして使用するには一意のフィールドが必要です。提供しない場合、mongodbが自動的に提供します。ただし、何らかの理由でカスタムIDを指定する場合(クエリのパフォーマンスを向上させる場合)は、手動で行うことができます。これが私の提案です:

    新しいドキュメントを挿入する場合は、次のように_idフィールドを手動で設定できます。

    doc._id = "12312312" //(Or whichever function to generate id you have)
    doc.save(...)
    

    ただし、データベースにすでにドキュメントがある場合は、それを変更することはできません。できることは、ドキュメントのコピーを作成し、同じデータで新しいドキュメントを保存して、古いドキュメントを消去することです。

    // Fetch the documents
    docs = db.clients.find({})
    
    docs.forEach((doc) => {
       //For each field you copy the values
       new_doc.field = doc.field
       new_doc._id = //YOUR ID FUNCTION 
    
       // insert the document, using the new _id
       db.clients.insert(new_doc)
    
       // remove the document with the old _id
       db.clients.remove({_id: doc._id})
    }
    

    この質問は次の質問に似ています:

    1つのMongoDBドキュメントの_idを更新するにはどうすればよいですか?

    私の答えがお役に立てば幸いです



    1. MongoDBjava.lang.ClassCastExceptionを使用したEclipselink

    2. 大文字と小文字を区別しない方法でMongodbを並べ替える

    3. (ノード:71307)[DEP0079]非推奨警告

    4. VersionError:Node.js/Mongooseで一致するドキュメントが見つかりませんエラー