2016-07-06 3 views
1
User.find({job:"developer",sick:1},callback); 

위의 쿼리는 나에게 배열 개체 수를 주었지만 그 길이가 필요합니다. 나는 시도하지 않았다 User.count({job:"developer",sick:1},callback); 그것은 작동하지 않는다.반환되는 배열의 몽구스 개수를 계산 하시겠습니까?

은 내가 네이티브 .length 기본 기능을 사용할 수 있습니다 알고 있지만 나는 내 쿼리를 최적화하기 위해 수()를 사용하고 싶습니다.

Song.find({job: 'developer'}, {sick: 1}, function(err, docs){ 
    var length = docs.length; 
    console.log(length); 
}) 

그러나 한 가지가 .count 반환을 기억 : 당신이 (Jasch1 @) .length

User.count({job:"developer",sick:1}, function(err, count) { 
    console.log(count); 
}); 

일부 사용자를 사용하려는 해달라고하면

답변

0

만이 사용하는 것이 좋습니다 count 기능을 사용하여 number .find는 실제 데이터를 실제로 반환하는데, 큰 콜렉션을 사용하면 매우 비효율적 일 수 있습니다.

+0

시도해 보았습니다. 작동하지 않았습니다. – Rachel

+0

@Rachel ok는이 작업을 수행합니까? User.find ({job : "developer", sick : 1}, function (err, items) {console.log (items)}); – Tim

3

나는 이런 식으로 생각합니다.

var query = {job:"developer",sick:1}; 
User.count(query, function(err, count) { 
    if(err) console.log(err); 
    console.log(count); 
}); 

반환되는 문서를 사용하려는 경우에 따라 더 좋은 방법은 .length를 사용하는 것입니다. 그러나 속도를 위해이 작업을 수행하는 경우 카운트가 더 좋습니다.

는 .length 함께 수행합니다

User.find({job: 'developer'}, {sick: 1}, function(err, docs){ 
    var length = docs.length; 
    console.log(length); 
}) 

차이를

.count() .length이 소요됩니다 동안 만 문서를 전체 쿼리를 만들고로드하지 않고 길이를 반환합니다 반환 된 배열 및 데이터베이스에 저장되는 내용에 따라 더 오래 걸릴 수있는 길이를 얻습니다.

+0

이러한 진술을하기 전에 Mongoose Doc (http://mongoosejs.com/docs/api.html#model_Model.count)을 읽어야합니다. – Tim

+0

나는 당신의 방법이 잘 될 것이라고 알고있다. 단지 그것을 할 수있는 최선의 방법은 아니다. – Jasch1

+0

글쎄, 당신의 방법은 몽구스 비동기 프레임 워크와 길이가 null이라는 간단한 사실을 위해 일하지 않을 것이다. – Tim