2015-10-14 130 views
2

插入獨特的 「_id」 我在第一次插入一個JSON結構如何忽略重複 「_id」 和MongoDB中

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"} 
] 

現在盟DB拋出重複鍵錯誤。 有沒有什麼辦法可以省略「_id」:2並在mongo中插入「_id」:5和「_id」:6?

請幫助我..

回答

0

你可以在你的情況下執行upsert

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

如果第一次查詢得到一個空白集合,如果一個Recrod它會插入在這種情況下數據名字安迪不在那裏,它會插入一個。

+0

感謝您的評論,但更新不工作,並試圖更新 –

0

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

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

他們的id是相同的,不是唯一的。

建議由mongdb自動創建ID。

您可以添加以下代碼:

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

感謝您的評論時,被拋出的錯誤。但是我需要省略具有相同ID的記錄並用不同的ID插入剩餘的記錄。 請讓我知道是否有任何其他替代 –

+0

您可以判斷文檔是否存在於mongodb中。如果存在,您可以忽略插入。 –

+0

您能否告訴我如何忽略一條記錄上的插入內容並繼續執行其他操作 –