MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Convertir l'attribut de chaîne MongoDB existant en BSON ::ObjectId

C'est ce que tu veux dire? (Vous avez une chaîne qui est l'hex d'un ObjectId, et vous voulez la transformer en 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") }

Ou est-ce ce que tu veux dire ? (Vous avez une chaîne mais vous voulez la supprimer et créer un nouvel ObjectId à sa place)

> 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") }