我正在尝试使用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
答案 0 :(得分:5)
Ben,你的陈述是正确的。它只是mongo shell 2.4.2的行为与其他行为不同(服务器不受影响)。您可以使用2.4.1中的mongo shell二进制文件。
答案 1 :(得分:-2)
您只能在创建之前设置对象ID 。事实之后,他们无法改变。您可能正在做的是在更改ID时创建新对象。
中有更多信息