Maison >base de données >MongoDB >Comment mettre à jour le _id d'un document MongoDB ?

Comment mettre à jour le _id d'un document MongoDB ?

WBOY
WBOYavant
2023-08-31 22:29:021580parcourir

如何更新 MongoDB 文档的 _id?

Vous ne pouvez pas le mettre à jour, mais vous pouvez enregistrer le nouvel identifiant et supprimer l'ancien. Suivez quelques étapes pour mettre à jour le _id de MongoDB. Les étapes sont les suivantes :

Étape 1 : Dans la première étape, vous devez stocker l'ObjectId dans une variable.

anyVariableName=db.yourCollectionName.findOne({_id:yourObjectIdValue)});

Étape 2 : Dans la deuxième étape, vous devez définir un nouvel identifiant.

yourDeclaredVariableName._id=yourNewObjectIdValue;

Étape 3 : Dans la troisième étape, vous devez insérer le nouvel identifiant dans le document.

db.yourCollectionName.insert(yourDeclaredVariableName);

Étape 4 : Dans la quatrième étape, vous devez supprimer l'ancien identifiant.

db.yourCollectionName.remove({_id:yourOldObjectIdValue)});

Pour comprendre les étapes ci-dessus, créons une collection avec des documents. La requête pour créer une collection à l'aide de documents est la suivante :

> db.updateIdDemo.insertOne({"StudentName":"Robert"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ebfec6fd07954a4890683")
}
> db.updateIdDemo.insertOne({"StudentName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ebff66fd07954a4890684")
}
> db.updateIdDemo.insertOne({"StudentName":"Maxwell"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6ebfff6fd07954a4890685")
}

Affichez tous les documents de la collection à l'aide de la méthode find(). La requête est la suivante :

> db.updateIdDemo.find().pretty();

Voici le résultat :

{ "_id" : ObjectId("5c6ebfec6fd07954a4890683"), "StudentName" : "Robert" }
{ "_id" : ObjectId("5c6ebff66fd07954a4890684"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5c6ebfff6fd07954a4890685"), "StudentName" : "Maxwell" }

Voici la requête pour mettre à jour le _id d'un document MongoDB :

Step1:
> myId=db.updateIdDemo.findOne({_id:ObjectId("5c6ebfec6fd07954a4890683")});
{ "_id" : ObjectId("5c6ebfec6fd07954a4890683"), "StudentName" : "Robert" }

Step 2:
> myId._id=ObjectId("5c6ebfec6fd07954a4890689");
ObjectId("5c6ebfec6fd07954a4890689")

Step 3:
> db.updateIdDemo.insert(myId);
WriteResult({ "nInserted" : 1 })

Step 4:
> db.updateIdDemo.remove({_id:ObjectId("5c6ebfec6fd07954a4890683")});
WriteResult({ "nRemoved" : 1 })

Vérifions si le _id a été mis à jour. Affichez tous les documents de la collection à l'aide de la méthode find() :

> db.updateIdDemo.find().pretty();

Voici le résultat :

{ "_id" : ObjectId("5c6ebff66fd07954a4890684"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5c6ebfff6fd07954a4890685"), "StudentName" : "Maxwell" }
{ "_id" : ObjectId("5c6ebfec6fd07954a4890689"), "StudentName" : "Robert" }

En regardant l'exemple de sortie, le _id de "StudentName":"Robert" a changé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer