如何从CSV文件来更新Mongo的Collection数据

更新时间:2017-07-24

问题描述

现在有一个外部的csv文件,文件内容如下:

customer_iducid
90fijd0af9d194370128943
90fijd0a90k194370128942

Mongo数据库中有一个personcollection,

customer_iducid
90fijd0af9d 
90fijd0a90k 

我需要将csv文件中的ucid更新到customer表中的ucid

解决方案

思路分如下三步

1. 创建一个临时collection temp_update_person_collection,用来导入csv中的字段。
2. 遍历更新临时collection的记录,针对每一条做更新。
3. 删除临时collection。

代码实现

#!/usr/bin/env bash

USERNAME=
PASSWORD=
HOST=127.0.0.1
PORT=27017
DATABASE=lead-management

IMPORT_CUSTOMER_CSV_FILE=/var/lib/mongo-files/customer-ucid-data.csv

mongoimport --host ${HOST}:${PORT} -d ${DATABASE} -c temp_update_person_collection --type csv --file ${IMPORT_CUSTOMER_CSV_FILE} --headerline

mongo ${HOST}:${PORT}/${DATABASE} --eval '

db.temp_update_person_collection.find().forEach(function(item){
	db.person.update({ _id: ObjectId(item.customer_id) }, { $set: {ucid: item.ucid} }, false, true);
})

db.temp_update_person_collection.drop();
'


期待与你交流,我的联系方式:邮箱 | 微信

Posted by Yuan Shenjian • June 20th, 2016

版权声明:自由转载•非商用•非衍生•保持署名 | Creative Commons BY-NC-ND 4.0

原文链接:https://sjyuan.cc/troubleshoots/mongo
支持原创