如何使用JavaScript在mongodb中设置唯一ID

时间:2013-02-22 08:18:04

标签: javascript node.js mongodb

我有这样的数据

Mywants:[
    {"title":"lap","rate":$20}
    {"title":"lap","rate":$20}
    {"title":"lap","rate":$20}
]

如果我将新数据保存到数组(mywant)中,我应该保存新的唯一ID,以便如何使用javascript保存。所以看起来应该是这样的:

Mywants:[
    {"title":"lap","rate":$20,_id:objectId("512640f3243c837c0e0004401}
    {"title":"lap","rate":$20,_id:objectId("512640f3243c837254000001}
    {"title":"lap","rate":$20,_id:objectId("512640f3243c8372540257001}}
]

要插入我正在使用

之类的命令
collection.update({"userid":1248787885},{$push:{"Mywant":{"title":"car","rate":$100}}});

3 个答案:

答案 0 :(得分:2)

正如andyb所说,你必须通过构建一个新元素为你的新元素生成ObjectId。但是你不需要一个单独的库:

var mongodb = require('mongodb');
collection.update(
    {"userid":1248787885},
    {$push:{"Mywant":{
        _id: new mongodb.ObjectID(),
        "title":"car",
        "rate":$100
    }}});

当然,$100不是有效的JavaScript类型,但我认为你知道这一点。值得注意的是Mongoose为您添加_id字段到数组元素,这是另一种选择。

答案 1 :(得分:1)

要在JavaScript中生成mongoDB ObjectId,您可以使用现有库或自己实现BSON ObjectId规范。 ObjectId.js就是这样一个库,获得一个ID就像:

var objectId = new ObjectId();

答案 2 :(得分:0)

在javascript中有一个名为Math.random()的方法,它会创建动态随机数,因此您可以将此数字修改为动态ID。