在 MongoDB 中将字符串转换为 ObjectID
Posted
技术标签:
【中文标题】在 MongoDB 中将字符串转换为 ObjectID【英文标题】:Convert string to ObjectID in MongoDB 【发布时间】:2011-12-11 03:51:18 【问题描述】:我正在使用 Codeigniter 和 MongoDB 开发一个 API。 在数据库的某些部分,我以 ObjectID 格式保存了图像的 ID 而不是一个字符串。现在我得到了一个字符串格式的 ID,我需要使用它来查询数据库。
如何将字符串“转换”为 ObjectID 以便进行查询?
从这里:
34234234234234234234
到这里:
ObjectID("34234234234234234234")
更新
我找到了解决方案。这样做new MongoId('34234234234234234234');
【问题讨论】:
MongoId
不是 Mongo REPL 中的有效类型
【参考方案1】:
使用猫鼬:
var mongoose = require('mongoose');
var objectId = mongoose.Types.ObjectId('569ed8269353e9f4c51617aa');
使用本机驱动程序 (https://***.com/a/21076589/3377073)
var ObjectId = require('mongodb').ObjectId;
doc._id = new ObjectId(doc._id); // wrap in ObjectID
【讨论】:
ObjectID
在使用原生驱动时应该是ObjectId
。【参考方案2】:
您只需要从您的 mongo 中获取 ObjectId 函数。
ObjectId = require('mongodb').ObjectID;
那么你可以这样使用它:
ObjectId("34234234234234234234")
【讨论】:
这个答案真的很有帮助! 我得到:“错误:ReferenceError:未定义要求”。这是什么意思?【参考方案3】:如果你使用 Meteor
var id = new Mongo.ObjectID("34234234234234234234");
【讨论】:
【参考方案4】:您现在可以在 mongodb 4.0 及更高版本上将字符串转换为 objectId。有一个新功能可以将字符串 id 转换为 objectId
在这里你可以看到文档$toObjectId
【讨论】:
【参考方案5】:或更好的使用
var mongodb = require(‘mongodb’); //this might have been defined at the beginning of your code.
//now use it
query = _id:mongodb.ObjectId('569ed8269353e9f4c51617aa');
其余的都是一样的。
【讨论】:
【参考方案6】: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))
【讨论】:
以上是关于在 MongoDB 中将字符串转换为 ObjectID的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中将 List<Object> 转换为 String[]