Mongodb:如何为数组中的每个元素添加唯一值?

时间:2016-01-02 15:25:11

标签: mongodb mongoose

我是mongodb的新用户,我有一个如下所示的模型。对于更新 list 数据,我必须在数组中指定元素。所以我认为我需要为每个元素存储一个唯一的值。因为list.name和list.price是可变数据。

那么有没有什么好方法可以在mongodb中创建一个唯一的id?或者我应该自己创建独特的ID?

{
   name: 'AAA',
   list: [
     {name: 'HOGE', price: 10, id: 'XXXXXXXXXX'}, // way to add id
     {name: 'FUGA', price: 12, id: 'YYYYYYYYYY'}  // way to add id
   ]
}

2 个答案:

答案 0 :(得分:0)

Mongodb仅为文档创建唯一ID。列表或数组元素没有更好的方法。因此,您应该自己创建唯一ID。

请注意,在更新列表时,请使用$addToSet。 有关$addToSet的详细信息,请按照此documentation

进行操作

答案 1 :(得分:0)

在你的id字段上使用ObjectId(),就像..

db.test.update({name: "AAA"}, { $push: { list: {_id : ObjectId(), name: "dingles", price: 21} }});

参考:https://docs.mongodb.org/v3.0/reference/object-id/