我有一个在MongoDB中的文件有被存储为它何时会更好地工作,如果它被存储为BSON ::一个的ObjectId字符串的属性的集合。
该集合名称为foo
和现场叫bar
。 什么是有各个领域的最佳方式bar
把其现有价值为BSON ::的ObjectId的实例?
我有一个在MongoDB中的文件有被存储为它何时会更好地工作,如果它被存储为BSON ::一个的ObjectId字符串的属性的集合。
该集合名称为foo
和现场叫bar
。 什么是有各个领域的最佳方式bar
把其现有价值为BSON ::的ObjectId的实例?
你是这个意思吗? (你有一个字符串,它是一个的ObjectId的十六进制,并希望把它变成一个的ObjectId)
> db.foo.insert({bar:new ObjectId().str});
> db.foo.insert({bar:new ObjectId().str});
> db.foo.insert({bar:new ObjectId().str});
> db.foo.find();
{ "_id" : ObjectId("4f95e00d9060633ce7fbab94"), "bar" : "4f95e00d9060633ce7fbab93" }
{ "_id" : ObjectId("4f95e0119060633ce7fbab96"), "bar" : "4f95e0119060633ce7fbab95" }
{ "_id" : ObjectId("4f95e0119060633ce7fbab98"), "bar" : "4f95e0119060633ce7fbab97" }
> db.foo.find().forEach(function(doc) { db.foo.update({_id:doc._id},{$set:{bar:new ObjectId(doc.bar)}}); });
> db.foo.find();
{ "_id" : ObjectId("4f95e00d9060633ce7fbab94"), "bar" : ObjectId("4f95e00d9060633ce7fbab93") }
{ "_id" : ObjectId("4f95e0119060633ce7fbab96"), "bar" : ObjectId("4f95e0119060633ce7fbab95") }
{ "_id" : ObjectId("4f95e0119060633ce7fbab98"), "bar" : ObjectId("4f95e0119060633ce7fbab97") }
或者,这是什么意思? (你有一个字符串,但要吹去和创造,在其设立一个新的ObjectId)
> db.foo.insert({bar:"some string id"});
> db.foo.insert({bar:"some string id2"});
> db.foo.insert({bar:"some string id3"});
> db.foo.find();
{ "_id" : ObjectId("4f95e1779060633ce7fbaba5"), "bar" : "some string id" }
{ "_id" : ObjectId("4f95e1799060633ce7fbaba6"), "bar" : "some string id2" }
{ "_id" : ObjectId("4f95e17b9060633ce7fbaba7"), "bar" : "some string id3" }
> db.foo.find().forEach(function(doc) { db.foo.update({_id:doc._id},{$set:{bar:new ObjectId()}}); });
> db.foo.find();
{ "_id" : ObjectId("4f95e1779060633ce7fbaba5"), "bar" : ObjectId("4f95e1819060633ce7fbaba8") }
{ "_id" : ObjectId("4f95e1799060633ce7fbaba6"), "bar" : ObjectId("4f95e1819060633ce7fbaba9") }
{ "_id" : ObjectId("4f95e17b9060633ce7fbaba7"), "bar" : ObjectId("4f95e1819060633ce7fbabaa") }
我不认为你可以改变一个对象ID,但你可以做这样的事情:
db.whatevers.find().forEach(function(x) {
x.oldId = x._id; // this can be handy :)
x._id = new ObjectID();
db.whatevers.insert(x);
})
db.whatevers.remove({oldId:{$exists:false}}};