2013-02-22 60 views
1

我有这样如何设置MongoDB中唯一的ID使用JavaScript

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

回答

1

命令生成的MongoDB ObjectId在JavaScript中,你可以使用现有的库或实现BSON的ObjectId规范自己:所以应该等看看。 ObjectId.js就是这样的一个库,为获得一个编号很简单:

var objectId = new ObjectId(); 
+0

如果我更新到数组中的新数据它不会创建新的对象id.so告诉我正确的答案。 – silvesterprabu 2013-02-22 09:45:52

+0

我已经更新我的答案有一个链接到一个JavaScript库,用于生成'ObjectId's – andyb 2013-02-22 12:49:25

0

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

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领域为您数组元素的,所以这是另一种选择。

+0

+1更精简,更清洁:-) – andyb 2013-02-22 14:22:59

+0

我给上面相同的编码,但它显示错误分号$推:{“Mywant “:{ _id:new mongodb.ObjectID(); “称号”: “汽车”, “速度”:$ 100}}这是正确的语法或不?我认为这是错误的语法。 – silvesterprabu 2013-02-23 12:10:05

+0

如果我给,而不是;它为我工作..谢谢你... – silvesterprabu 2013-02-23 12:16:50