Я хочу преобразовать ObjectID (Mongodb) в String в JavaScript. Когда я получаю объектную форму MongoDB. он похож на объект: timestamp, second, inc, machine. Я не могу преобразовать в строку.
Преобразование ObjectID (Mongodb) в String в JavaScript
Ответ 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()
без успеха.
Ответ 3
в оболочке
ObjectId("507f191e810c19729de860ea").str
в js, используя собственный драйвер для узла
objectId.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();
Ответ 8
Используйте toString: var stringId = objectId.toString()
Работает с последним Node MongoDB Native driver (v3. 0+):
Ответ 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);
});
}
...