Подтвердить что ты не робот

Преобразование ObjectID (Mongodb) в String в JavaScript

Я хочу преобразовать ObjectID (Mongodb) в String в JavaScript. Когда я получаю объектную форму MongoDB. он похож на объект: timestamp, second, inc, machine. Я не могу преобразовать в строку.

4b9b3361

Ответ 1

Попробуй это:

objectId.str;

Смотрите док.

Ответ 2

Вот рабочий пример преобразования 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() без успеха.

Ответ 4

В принципе, вы можете попробовать следующее:

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

Объект ObjectId + String преобразуется в объект String.

Ответ 5

Если кто-то использует в Meteorjs, можете попробовать:

В сервере: ObjectId(507f191e810c19729de860ea)._str.

В шаблоне: {{ collectionItem._id._str }}.

Ответ 6

Предполагая, что OP хочет получить шестнадцатеричное строковое значение ObjectId, используя Mongo 2.2 или выше, метод valueOf() возвращает представление объекта как шестнадцатеричную строку. Это также достигается с помощью свойства str.

Ссылка на сообщение anubiskong дает все детали, опасность здесь заключается в использовании техники, которая изменилась из более ранних версий, например. toString().

Ответ 7

Это работает. У вас есть объект mongodb: ObjectId (507f191e810c19729de860ea), чтобы получить строковое значение _id, вы просто скажете ObjectId (507f191e810c19729de860ea).valueOf();

Ответ 9

Просто используйте это: _id.$oid

И вы получите строку ObjectId. Это происходит с объектом.

Ответ 10

Вы можете использовать агрегацию $toString представленную в версии mongodb 4.0, которая преобразует ObjectId в строку

db.collection.aggregate([
  { "$project": {
    "_id": { "$toString": "$your_objectId_field" }
  }}
])

Ответ 11

Нашел это действительно смешно, но у меня получилось:

    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

Используйте этот простой трюк, your-object.$id

Я получаю массив идентификаторов mongo, вот что я сделал.

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

...