2016-11-21 3 views
0

만약 내가 몽구스로이 쿼리를 수행한다면; 나는 모두 같은 아이디의 전달 분명히 있기 때문에, 배열이 하나의 개체 만 갖는Mongoose - 동일한 ID를 가진 find()

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

:

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

쿼리는 같은를 반환합니다. 그러나 실제로 중복 된 개체가 반환되기를 원합니다. 어떻게해야합니까?

답변

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); 
    } 
}); 
관련 문제