MongoDB:聯合查詢並更新資料
阿新 • • 發佈:2019-01-25
–工作筆記,記錄今天解決的一個問題。
我在system_logging庫裡放了一個woplus_tservice集合,存有使用者手機號碼。同時,我在base_data庫裡有另一個集合mobile_segment,存有號碼歸屬地。
我需要使用mobile_segment中的記錄更新woplus_tservice中的記錄,增加province和city。
程式碼如下:
use system_logging;
var cur = db.woplus_tservice.find({$or:[{'province':{$exists:false}},{'province':'--'}]});
var handler = function(doc,idx,arr){
var mid = doc.userId.substring(0,7);
var pc = db.getSiblingDB('base_data').mobile_segment.findOne({'msegment':mid});
if(pc!=null){
//print(mid+',,,'+pc.province);
doc.province=pc.province;
doc.city=pc.city;
db.woplus_tservice.update({'_id' :doc._id},doc);
}
};
cur.forEach(handler);
其實,MongoDB是允許我們在A庫直接訪問B庫的,db.getSiblingDB(),很簡單的事情,以前沒太注意。謹記錄之。