JavaScriptでObjectID(Mongodb)をStringに変換したいです。MongoDB からオブジェクトを取得したとき。オブジェクトのように、タイムスタンプ、秒、インク、マシン。文字列に変換できません。
21 に答える
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()
成功しなかったなど、他のさまざまな機能を試しました。
toString を使用します。
var stringId = objectId.toString()
最新のノード MongoDB ネイティブ ドライバー (v3.0+) で動作します。
誰かが Meteorjs を使用している場合は、次を試すことができます。
サーバー内: ObjectId(507f191e810c19729de860ea)._str
。
テンプレート: {{ collectionItem._id._str }}
.
実際、これを試すことができます:
> a['_id']
ObjectId("518cbb1389da79d3a25453f9")
> a['_id'] + ''
"518cbb1389da79d3a25453f9"
ObjectId オブジェクト + String は String オブジェクトに変換されます。
OP が ObjectId の 16 進文字列値を取得したいと仮定すると、Mongo 2.2 以降を使用して、valueOf()
メソッドはオブジェクトの表現を 16 進文字列として返します。これは、str
プロパティでも実現されます。
anubiskong の投稿のリンクにすべての詳細が記載されています。ここでの危険は、古いバージョンから変更された手法を使用することtoString()
です。
これを使用するだけです:_id.$oid
そして、ObjectId 文字列を取得します。これはオブジェクトに付属しています。
文字列フォーマットを使用できます。
const stringId = `${objectId}`;
あなたが使用することができますString
String(a['_id'])
MongoDB と一緒にMongooseを使用している場合、ObjectID の文字列値を取得する組み込みメソッドがあります。文字列を比較するためif
に使用されるステートメントを実行するために、それを正常に使用しました。===
ドキュメントから:
Mongoose は、デフォルトで各スキーマに id 仮想ゲッターを割り当てます。これは、ドキュメントの _id フィールド キャストを文字列に返すか、ObjectIds の場合はその hexString を返します。id ゲッターをスキーマに追加したくない場合は、スキーマの構築時にこのオプションを渡すことで無効にすることができます。