在JavaScript中将ObjectID(Mongodb)转换为String

时间:2013-05-10 08:58:12

标签: javascript mongodb aggregation-framework

我想在JavaScript中将ObjectID(Mongodb)转换为String。 当我从一个对象形式MongoDB。它就像一个对象有:timestamp,second,inc,machine。 我无法转换为字符串。

18 个答案:

答案 0 :(得分:66)

试试这个:

objectId.str;

请参阅doc

答案 1 :(得分:19)

以下是将ObjectId转换为字符串

的工作示例
> 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()但没有成功。

答案 2 :(得分:12)

shell

中的

ObjectId("507f191e810c19729de860ea").str

在js using the native driver for node

objectId.toHexString()

答案 3 :(得分:8)

实际上,你可以试试这个:

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

ObjectId对象+ String将转换为String对象。

答案 4 :(得分:6)

如果有人在Meteorjs中使用,可以尝试:

在服务器中:ObjectId(507f191e810c19729de860ea)._str

在模板中:{{ collectionItem._id._str }}

答案 5 :(得分:5)

假设OP想要使用Mongo 2.2或更高版本获取ObjectId的十六进制字符串值,valueOf()方法将对象的表示形式返回为十六进制字符串。这也是通过str属性实现的。

anubiskong的帖子上的链接提供了所有细节,这里的危险是使用从旧版本改变的技术,例如toString()

答案 6 :(得分:3)

这个有效,你有mongodb对象:ObjectId(507f191e810c19729de860ea), 要获取_id的字符串值,您只需说 ObjectId(507f191e810c19729de860ea).valueOf();

答案 7 :(得分:2)

使用toString: var stringId = objectId.toString()

使用最新的Node MongoDB本机驱动程序(v3.0 +):

http://mongodb.github.io/node-mongodb-native/3.0/

答案 8 :(得分:1)

在 Javascript 中,String() 使它变得容易

const id = String(ObjectID)

答案 9 :(得分:0)

使用此功能:_id.$oid

你得到了ObjectId字符串。这与对象有关。

答案 10 :(得分:0)

您可以使用mongodb版本 4.0 中引入的$toString聚合,该聚合将ObjectId转换为字符串

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

答案 11 :(得分:0)

发现这真的很有趣,但对我有用:

    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 :(得分:0)

您可以使用字符串格式。

filter := bson.D{{"myID", 123456789}}

答案 13 :(得分:0)

您可以使用String

String(a['_id'])

答案 14 :(得分:0)

在Js中只需做以下操作:_id.toString()

例如:

const myMongoDbObjId = ObjectID('someId');
const strId = myMongoDbObjId.toString();
console.log(typeof strId); // string

答案 15 :(得分:0)

聚合时使用 $addFields

$addFields: {
      convertedZipCode: { $toString: "$zipcode" }
   }

答案 16 :(得分:-1)

使用这个简单的技巧your-object.$id

我正在获得一系列mongo ID,这就是我所做的。

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

...

答案 17 :(得分:-1)

如果您将Mongoose与MongoDB结合使用,则它具有用于获取ObjectID字符串值的内置方法。我成功地使用它来完成一个if语句,该语句使用===来比较字符串。

来自documentation

猫鼬默认情况下为您的每个模式分配一个id虚拟getter,该getter将文档的_id字段强制转换为字符串,对于ObjectIds,则返回其hexString。如果您不希望在架构中添加id getter,则可以在架构构建时通过传递此选项来禁用它。