我正在使用Mongo数据库。有两个集合main_hikanshou
和main_kokyaku
。 main_hikanshou
仅包含一列-phone_number
。 main_kokyaku
包含约10列,其中一列是相同的phone_number
。这两个集合具有大约150000个值,我想将这两个集合进行比较,并以计算轻巧的方式获取匹配值上的.csv
输出...
我正在使用此js
仅用于print
,但是以这种方式使用它花费的时间太长了...
var list = []
db.main_hikanshou.find().forEach(function(doc1){
var doc2 = db.main_kokyaku.findOne({phone_number: doc1.phone_number});
if (doc2) {
list.push(doc1);
}
});
print(list);
答案 0 :(得分:1)
使用聚合将匹配的phone_number
与main_hikanshou
集合加入
db.collection('main_hikanshou').aggregate([
{ $lookup:
{
from: 'main_kokyaku',
localField: 'phone_number',
foreignField: 'phone_number',
as: 'phoneNumber'
}
}
])
答案 1 :(得分:1)
您可以使用$in
尝试一下:
db.main_hikanshou.find({},{phone_number:1} ).toArray(function (_err, docs) {//get all phone phone numbers
let phone_numberList = docs.map(v => { return v.phone_number });
var doc2 = db.main_kokyaku.find({ phone_number: { "$in": phone_numberList } });//search phone
print(doc2);
})