我想在JavaScript中将ObjectID(Mongodb)转换为String。 当我从一个对象形式MongoDB。它就像一个对象有:timestamp,second,inc,machine。 我无法转换为字符串。
答案 0 :(得分:66)
答案 1 :(得分:19)
以下是将ObjectId
转换为字符串
> a=db.dfgfdgdfg.findOne()
{ "_id" : ObjectId("518cbb1389da79d3a25453f9"), "d" : 1 }
> a['_id']
ObjectId("518cbb1389da79d3a25453f9")
> a['_id'].toString // This line shows you what the prototype does
function () {
return "ObjectId(" + tojson(this.str) + ")";
}
> a['_id'].str // Access the property directly
518cbb1389da79d3a25453f9
> a['_id'].toString()
ObjectId("518cbb1389da79d3a25453f9") // Shows the object syntax in string form
> ""+a['_id']
518cbb1389da79d3a25453f9 // Gives the hex string
尝试过各种其他功能,例如toHexString()
但没有成功。
答案 2 :(得分:12)
ObjectId("507f191e810c19729de860ea").str
在js using the native driver for node
中 objectId.toHexString()
答案 3 :(得分:8)
实际上,你可以试试这个:
> a['_id']
ObjectId("518cbb1389da79d3a25453f9")
> a['_id'] + ''
"518cbb1389da79d3a25453f9"
ObjectId对象+ String将转换为String对象。
答案 4 :(得分:6)
在服务器中:ObjectId(507f191e810c19729de860ea)._str
。
在模板中:{{ collectionItem._id._str }}
。
答案 5 :(得分:5)
假设OP想要使用Mongo 2.2或更高版本获取ObjectId的十六进制字符串值,valueOf()
方法将对象的表示形式返回为十六进制字符串。这也是通过str
属性实现的。
anubiskong的帖子上的链接提供了所有细节,这里的危险是使用从旧版本改变的技术,例如toString()
。
答案 6 :(得分:3)
这个有效,你有mongodb对象:ObjectId(507f191e810c19729de860ea), 要获取_id的字符串值,您只需说 ObjectId(507f191e810c19729de860ea).valueOf();
答案 7 :(得分:2)
使用toString:
var stringId = objectId.toString()
使用最新的Node MongoDB本机驱动程序(v3.0 +):
答案 8 :(得分:1)
在 Javascript 中,String() 使它变得容易
const id = String(ObjectID)
答案 9 :(得分:0)
使用此功能:_id.$oid
你得到了ObjectId字符串。这与对象有关。
答案 10 :(得分:0)
您可以使用mongodb版本 4.0 中引入的$toString
聚合,该聚合将ObjectId转换为字符串
db.collection.aggregate([
{ "$project": {
"_id": { "$toString": "$your_objectId_field" }
}}
])
答案 11 :(得分:0)
发现这真的很有趣,但对我有用:
db.my_collection.find({}).forEach((elm)=>{
let value = new String(elm.USERid);//gets the string version of the ObjectId which in turn changes the datatype to a string.
let result = value.split("(")[1].split(")")[0].replace(/^"(.*)"$/, '$1');//this removes the objectid completely and the quote
delete elm["USERid"]
elm.USERid = result
db.my_collection.save(elm)
})
答案 12 :(得分:0)
您可以使用字符串格式。
filter := bson.D{{"myID", 123456789}}
答案 13 :(得分:0)
您可以使用String
String(a['_id'])
答案 14 :(得分:0)
在Js中只需做以下操作:_id.toString()
例如:
const myMongoDbObjId = ObjectID('someId');
const strId = myMongoDbObjId.toString();
console.log(typeof strId); // string
答案 15 :(得分:0)
聚合时使用 $addFields
$addFields: {
convertedZipCode: { $toString: "$zipcode" }
}
答案 16 :(得分:-1)
使用这个简单的技巧your-object.$id
我正在获得一系列mongo ID,这就是我所做的。
jquery的:
...
success: function (res) {
console.log('without json res',res);
//without json res {"success":true,"message":" Record updated.","content":[{"$id":"58f47254b06b24004338ffba"},{"$id":"58f47254b06b24004338ffbb"}],"dbResponse":"ok"}
var obj = $.parseJSON(res);
if(obj.content !==null){
$.each(obj.content, function(i,v){
console.log('Id==>', v.$id);
});
}
...
答案 17 :(得分:-1)
如果您将Mongoose与MongoDB结合使用,则它具有用于获取ObjectID字符串值的内置方法。我成功地使用它来完成一个if
语句,该语句使用===
来比较字符串。
猫鼬默认情况下为您的每个模式分配一个id虚拟getter,该getter将文档的_id字段强制转换为字符串,对于ObjectIds,则返回其hexString。如果您不希望在架构中添加id getter,则可以在架构构建时通过传递此选项来禁用它。