1. 程式人生 > >MongoDB:聯合查詢並更新資料

MongoDB:聯合查詢並更新資料

–工作筆記,記錄今天解決的一個問題。

我在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(),很簡單的事情,以前沒太注意。謹記錄之。