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

如何使用JavaScript在mongodb中设置唯一id,javascript,node.js,mongodb,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("512640f3243

我有这样的数据

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}}});
要在JavaScript中生成mongoDB,您可以使用现有库或自己实现BSON ObjectId规范。是这样一个库,获取Id非常简单:

var objectId = new ObjectId();

在javascript中,有一种方法叫做Math.random(),它将创建动态随机数,因此您可以将该数字修改为动态id。

正如andyb所指出的,您必须通过构造一个新元素来为新元素生成
ObjectId
。但您不需要单独的库:

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

当然,
$100
不是一种有效的JavaScript类型,但我想您应该知道这一点。还值得注意的是,在数组元素中添加
\u id
字段,所以这是另一种选择。

如果我将新数据更新到数组中,它将不会创建新的对象id。请告诉我正确的答案。我已通过指向JavaScript库的链接更新了我的答案,以生成
ObjectId
si给出了与上述编码相同的答案,但它以分号显示错误。$push:{“Mywant”:{u id:new mongodb.ObjectId();“title”:“car”,“rate”:$100}}这句语法是否正确?我认为这是错误的语法。