2016-11-21 44 views
0

如果我要用猫鼬执行此查询;猫鼬 - 找到()与多个ID是相同的

Schema.find({ 
    _id: { 
     $in: ['abcd1234', 'abcd1234', 'abcd1234'] 
    } 
}); 

查询只会返回类似:

[{ 
    'property1': 'key1', 
    'property2': 'key2' 
}] 

与阵列只有一个对象,显然是因为我在所有相同ID的通过。但是,我实际上希望返回重复的对象。我怎样才能做到这一点?

回答

1

Mongo本身只会返回没有重复的对象。但是你可以用这些重复的东西来构建一个对象数组。

例如,如果array是对象的数组回到我的蒙戈 - 在这种情况下:

var array = [{ 
    _id: 'abcd1234', 
    property1: 'key1', 
    property2: 'key2' 
}]; 

ids是你要与重复的ID清单 - 在你的情况:

var ids = ['abcd1234', 'abcd1234', 'abcd1234']; 

那么你可以做:

var objects = {}; 
array.forEach(o => objects[o._id] = o); 
var dupArray = ids.map(id => objects[id]); 

现在dupArray应该包含具有重复项的对象。

完整的示例:

var ids = ['abcd1234', 'abcd1234', 'abcd1234']; 
Schema.find({_id: {$in: ids}}, function (err, array) { 
    if (err) { 
    // handle error 
    } else { 
    var objects = {}; 
    array.forEach(o => objects[o._id] = o); 
    var dupArray = ids.map(id => objects[id]); 
    // here you have objects with duplicates in dupArray: 
    console.log(dupArray); 
    } 
});