JavaScriptでObjectID(Mongodb)をStringに変換したい。 MongoDBからオブジェクトを取得するとき。オブジェクトが持っているように:タイムスタンプ、セカンド、インク、マシン。文字列に変換できません。
ObjectId
inを文字列に変換する実用的な例を次に示します
_> 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()
のような他のさまざまな関数を試してみましたが、成功しませんでした。
実際には、これを試すことができます:
> a['_id']
ObjectId("518cbb1389da79d3a25453f9")
> a['_id'] + ''
"518cbb1389da79d3a25453f9"
ObjectIdオブジェクト+ Stringは、Stringオブジェクトに変換されます。
サーバー内:ObjectId(507f191e810c19729de860ea)._str
。
テンプレート内:{{ collectionItem._id._str }}
。
OPがMongo 2.2以降を使用してObjectIdの16進文字列値を取得したい場合、valueOf()
メソッドはオブジェクトの表現を16進文字列として返します。これは、str
プロパティでも実現されます。
Anubiskongの投稿のリンクはすべての詳細を提供しますが、ここでの危険は古いバージョンから変更されたテクニックを使用することですtoString()
。
これは動作します。mongodbオブジェクト:ObjectId(507f191e810c19729de860ea)があり、_idの文字列値を取得するには、単にObjectId(507f191e810c19729de860ea).valueOf();と言います。
ToStringを使用:var stringId = objectId.toString()
最新のNode MongoDB Nativeドライバー(v3.0 +)で動作します:
$toString
mongodbバージョンで導入された集約4.0ObjectIdを文字列に変換します
db.collection.aggregate([
{ "$project": {
"_id": { "$toString": "$your_objectId_field" }
}}
])
これは本当に面白いことがわかりましたが、私にとってはうまくいきました:
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)
})
これを使用してください:_id.$oid
そして、ObjectId文字列を取得します。これにはオブジェクトが付属しています。