2013-05-10 3 views
28

Je veux convertir ObjectID (Mongodb) en String en JavaScript. Lorsque j'obtiens un formulaire d'objet MongoDB. comme comme un objet a: timestamp, second, inc, machine. Je ne peux pas convertir en chaîne.Convertir ObjectID (Mongodb) en String en JavaScript

+1

' "" + objectId' ou' objectId.toString() '' laquelle objectId' est la variable que je crois fera ce que vous cherchez. – Sammaye

+1

ObjectID chargé à partir de MongoDB est un objet. si vous utilisez la fonction toString() en Javascript, il retournera [Object, Object]. – vhlen

+0

Odd, ces fonctions étaient censées être implémentées, je suis sûr que cela a été corrigé – Sammaye

Répondre

13

Voici un exemple concret de conversion du ObjectId pour une chaîne

> 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 

a bien essayé diverses autres fonctions comme toHexString() sans succès.

+0

Raison du downvote? – Sammaye

+1

.toHexString() a travaillé pour moi grâce à Sammaye! http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html –

38

Essayez ceci:

objectId.str; 

Voir la doc: http://docs.mongodb.org/manual/reference/object-id/

+1

Cela devrait être marqué comme la bonne réponse :) –

+0

je ne comprends pas pourquoi, cela ne fonctionne pas pour moi quand je fais un console.log, je vois l'objectId comme un objet sur la console – roz

+1

Cela n'a pas fonctionné pour moi non plus. Cependant, 'objectId.toString()' a fait. –

7

acturally, vous pouvez essayer ceci:

> a['_id'] 
ObjectId("518cbb1389da79d3a25453f9") 
> a['_id'] + '' 
"518cbb1389da79d3a25453f9" 

objet ObjectId + chaîne sera converti en objet String.

4

En supposant que l'OP souhaite obtenir la valeur de chaîne hexadécimale de l'ObjectId, en utilisant Mongo 2.2 ou supérieur, la méthode valueOf() renvoie la représentation de l'objet en tant que chaîne hexadécimale. Ceci est également réalisé avec la propriété str.

Le lien sur la publication d'anubiskong donne tous les détails, le danger ici est d'utiliser une technique qui a changé par rapport aux anciennes versions, par ex. toString().

0

cela fonctionne, vous avez l'objet MongoDB: ObjectId (507f191e810c19729de860ea), pour obtenir la valeur de chaîne de _id, vous il suffit de dire ObjectId (507f191e810c19729de860ea) .valueOf();

+0

S'il vous plaît améliorer votre réponse –

+0

la chaîne est enveloppée dans ObjectId, donc pour obtenir la valeur enveloppée vous utilisez la réponse que je viens de fournir @ Ivan Barayev – ndoty

2

Si quelqu'un utilise dans Meteorjs, peut essayer:

Dans le serveur: ObjectId(507f191e810c19729de860ea)._str.

Dans le modèle: {{ collectionItem._id._str }}.

0

utiliser juste ceci: _id.$oid

Et vous obtenez la chaîne ObjectId. Cela vient avec l'objet.

+0

Cela ne fonctionne pas pour moi –

+0

Vous pouvez le voir à [Strict MongoDB Extended JSON] (https: //docs.mongodb.com/manual/reference/mongodb-extended-json/#oid). – Sergio

-1

Utilisez cette astuce simple, your-object.$id

Je reçois un tableau de mongo Ids, voici ce que je faisais.

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); 
    }); 
} 

...