如何忽略重复的“_id”并在mongodb中插入唯一的“_id”

时间:2015-10-14 18:01:31

标签: mongodb mean

我在第一次插入时有一个JSON结构

collection.insert(query.query, function(err, docs) {
                callback(err,docs);
                dbCon.close();
            });

JSON结构:

"employees":[
    {"_id":1, "lastName":"Doe"}, 
    {"_id":2, "lastName":"Smith"}, 
    {"_id":3,"lastName":"Jones"}
]

当我第一次将此JSON插入mongodb时,插入时没有任何错误。 当我再次尝试在同一个数据库上插入时,使用以下JSON

"employees":[
    {"_id":2, "lastName":"Smith"}, 
    {"_id":5, "lastName":"Peter"}, 
    {"_id":6,"``lastName":"James"}
]

现在mondo db正在抛出重复键错误。 有没有办法可以省略“_id”:2并将“_id”:5和“_id”:6插入mongo?

请帮帮我..

2 个答案:

答案 0 :(得分:0)

您可以在案件中执行upsert

db.people.update(
   { name: "Andy" },
   {
      name: "Andy",
      rating: 1,
      score: 1
   },
   { upsert: true }
)

如果第一个查询获得一个空白集合,那么如果没有名称为Andy的Recrod,它将插入数据,这将插入一个。

答案 1 :(得分:0)

第一次插入文档 {"_id":2, "lastName":"Smith"}

第二次插入文档{"_id":2, "lastName":"Smith"}

他们的ids是相同的,不是唯一的。

建议由mongdb自动创建id。

您可以添加以下代码:

collection.findOne({"_id":2}.exec(function(err,result){
   if(!result){
      collection.insert(XXX);
   }
}));