2
創造新的我有一個領域一個巨大的Excel工作表:追加如果key存在,或在MongoDB中
- CUSTOMER_ID
- 活動
- 時間戳
我要讀的是Excel工作表和將值插入到集合中。如果存在具有給定密鑰customer_id的文檔,則應將活動附加到活動密鑰,否則應創建新文檔。
插入前是否需要檢查每個customer_id是否存在?有效的方法是什麼?
創造新的我有一個領域一個巨大的Excel工作表:追加如果key存在,或在MongoDB中
我要讀的是Excel工作表和將值插入到集合中。如果存在具有給定密鑰customer_id的文檔,則應將活動附加到活動密鑰,否則應創建新文檔。
插入前是否需要檢查每個customer_id是否存在?有效的方法是什麼?
你可以用$ 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" ] }
您可以使用更新功能並將upsert傳遞爲true。 https://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update –