比较两个集合中的值

时间:2019-12-27 07:06:20

标签: javascript mongodb collections

我正在使用Mongo数据库。有两个集合main_hikanshoumain_kokyakumain_hikanshou仅包含一列-phone_numbermain_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);

2 个答案:

答案 0 :(得分:1)

使用聚合将匹配的phone_numbermain_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);
})