将字符串转换为MongoDB中的ObjectID

时间:2011-10-19 17:49:17

标签: codeigniter mongodb

我正在使用Codeigniter和MongoDB开发API。 在数据库的某些部分,我以ObjectID格式保存了图像的ID 而不是一个字符串。现在我得到了一个字符串格式的ID,我需要使用它来查询数据库。

如何将字符串“转换”为ObjectID以便我可以进行查询?

由此:

34234234234234234234

对此:

ObjectID("34234234234234234234")

更新

我找到了解决方案。只需执行此操作new MongoId('34234234234234234234');

7 个答案:

答案 0 :(得分:22)

您只需要从您的mongo中获取ObjectId函数。

ObjectId = require('mongodb').ObjectID;

然后你可以这样使用它:

ObjectId("34234234234234234234")

答案 1 :(得分:16)

使用mongoose:

var mongoose = require('mongoose');
var objectId = mongoose.Types.ObjectId('569ed8269353e9f4c51617aa');

使用本机驱动程序(https://stackoverflow.com/a/21076589/3377073

var ObjectID = require('mongodb').ObjectID;
doc._id = new ObjectID(doc._id); // wrap in ObjectID

答案 2 :(得分:6)

http://api.mongodb.org/java/2.6.5/org/bson/types/ObjectId.html

在这里,您可以看到有一个带有单个String参数的构造函数ObjectId。那么,对你有用吗?

答案 3 :(得分:4)

如果您使用Meteor

str_list

答案 4 :(得分:0)

或更好地使用

var mongodb = require(‘mongodb’); //this might have been defined at the beginning of your code.
//now use it
query = {_id:mongodb.ObjectId('569ed8269353e9f4c51617aa')};

其余的都一样。

答案 5 :(得分:0)

您现在可以在mongodb 4.0及更高版本上将字符串转换为objectId。有一个新功能可以将字符串ID转换为objectId

在这里您可以查看文档$toObjectId

答案 6 :(得分:0)

mongo DB版本v3.6.3

如何将输入的字符串保存到MongoDB ObjectId 快速控制器代码上

const mongoose = require('mongoose');
var ObjectId = require('mongodb').ObjectId;
user: mongoose.Types.ObjectId(req.body.user)
console.log(user, typeof(user))