2016-01-05 34 views
2

創造新的我有一個領域一個巨大的Excel工作表:追加如果key存在,或在MongoDB中

  • CUSTOMER_ID
  • 活動
  • 時間戳

我要讀的是Excel工作表和將值插入到集合中。如果存在具有給定密鑰customer_id的文檔,則應將活動附加到活動密鑰,否則應創建新文檔。
插入前是否需要檢查每個customer_id是否存在?有效的方法是什麼?

+0

您可以使用更新功能並將upsert傳遞爲true。 https://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update –

回答

1

你可以用$ push組合使用upsert來做到這一點。請看下面的例子


record = {customerId: 1, activity: 'Activity1.1'} 
db.tempc.update({_id: record.customerId}, {$push: {activities: record.activity}}, {upsert: true}) 

然後觀察結果


db.tempc.find() 
{ "_id" : 1, "activities" : [ "Activity1.1" ] } 

然後嘗試處理具有相同的客戶ID第二個記錄,但不同的活動


record = {customerId: 1, activity: 'Activity1.2'} 
db.tempc.update({_id: record.customerId}, {$push: {activities: record.activity}}, {upsert: true}) 

現在觀察到這一活動被添加到現有客戶


db.tempc.find() 
{ "_id" : 1, "activities" : [ "Activity1.1", "Activity1.2" ] } 
相關問題