2

我正在尝试使用 MongoDB 重新分配 ID。但是,它没有将 ID 设置为等于我分配的值,而是创建了一个新的 ObjectId。如何分配自己的 ID?

> db.pGitHub.find();
{ "_id" : ObjectId("516f202da1faf201daa15635"), 
     "url" : { "raw" : "https://github.com/Quatlus", 
     "domain" : "github.com", "canonical" : "https://github.com/quatlus" } }
{ "_id" : ObjectId("516f202da1faf201daa15636"), 
      "url" : { "raw" : "https://github.com/Quasii", 
      "domain" : "github.com", "canonical" : "https://github.com/quasii" } }

> db.pGitHub.find().forEach(function(myProfile) {   
       var oldId = myProfile._id;   
       myProfile._id = 'exampleid';   
       db.pGitHub.save(myProfile);   
       db.pGitHub.remove({_id: oldId}); 
  });

> db.pGitHub.find();
{ "_id" : ObjectId("516f204da1faf201daa15637"), 
      "url" : { "raw" : "https://github.com/Quatlus", 
      "domain" : "github.com", "canonical" : "https://github.com/quatlus" } }
{ "_id" : ObjectId("516f204da1faf201daa15638"),  
      "url" : { "raw" : "https://github.com/Quasii", 
      "domain" : "github.com", "canonical" : "https://github.com/quasii" } }

我正在使用 Mongo 2.4.2

4

2 回答 2

5

本,你的说法是正确的。它只是 mongo shell 2.4.2 的行为与其他的有所不同(服务器不受影响)。您可以出于您的目的使用 2.4.1 中的 mongo shell 二进制文件。

于 2013-04-17T23:59:21.343 回答
-2

您只能在创建对象 ID之前设置它们。事后,他们无法改变。当您像这样更改 ID 时,您可能正在做的是创建新对象。

MongoDB 文档中有更多信息

于 2013-04-17T23:24:13.653 回答