mongodb - 将现有的 MongoDB 字符串属性转换为 BSON::ObjectId

标签 mongodb mongoid

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

关于mongodb - 将现有的 MongoDB 字符串属性转换为 BSON::ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10287947/

相关文章:

c++ - 如何使用mongodb的c++驱动程序构建程序?

ruby-on-rails - 博客 Gem/Rails 引擎/Mongoid

javascript - 使用 MongoDB 更新嵌套数组

python - 如何使用 celery 使用 mongoengine 向 mongodb 插入数据

ruby-on-rails - 在 mongoid 中与组求和

java - Mongo 嵌入式服务器 : the single instance is not primary in replica set

ruby-on-rails - 未初始化的常量 Mongoid::Taggable::Mongo

ruby-on-rails - mongoid_fulltext utf-8 特殊字符

ruby-on-rails-3 - 如何从 Mongoid 直接访问 MongoDB API?

ruby-on-rails - Faraday::ConnectionFailed:保存到 mongo 数据库时连接被拒绝