2013-10-29 2 views
3

mongoDB에서 문서를 찾는 방법을 여러 번 보았습니다. 성능에 문제가 없다는 것, 즉 문서를 실제로 가져올 수는 없습니다. 대신에 문서가 존재하거나 존재하지 않으면 1 또는 0의 개수를 검색합니다. MongoDB의에서mongoose (Node.js)에 문서가 있는지 확인하십시오.

, 하나는 아마도 수행 할 수 몽구스에서

db.<collection>.find(...).limit(1).size() 

, 당신을 콜백이 없거나 하나. 그러나 두 경우 모두 수를 확인하는 것이 아니라 항목을 검색하고 있습니다. 나는 단순히 문서가 몽구스에 존재하는지 확인하는 방법을 원한다. 나는 그 문서 자체를 원하지 않는다.

편집 :

for (var i = 0; i < deamons.length; i++){ 
    var deamon = deamons[i]; // get the deamon from the parsed XML source 
    deamon = createDeamonDocument(deamon); // create a PSDeamon type document 
    PSDeamon.count({deamonId: deamon.deamonId}, function(error, count){ // check if the document exists 
     if (!error){ 
      if (count == 0){ 
       console.log('saving ' + deamon.deamonName); 
       deamon.save() // save 
      }else{ 
       console.log('found ' + deamon.leagueName); 
      } 
     } 
    }) 
} 
+2

http://mongoosejs.com/docs/api.html#model_Model.count? –

+0

오, 나는이 곳을 사랑한다. 감사. 그것으로 해결됩니다. – p0lAris

답변

3

당신은 자바 스크립트 범위를 읽은해야합니다. 어쨌든 다음 코드를 시도하십시오.

for (var i = 0; i < deamons.length; i++) { 
    (function(d) { 
     var deamon = d 
     // create a PSDeamon type document 
     PSDeamon.count({ 
      deamonId : deamon.deamonId 
     }, function(error, count) {// check if the document exists 
      if (!error) { 
       if (count == 0) { 
        console.log('saving ' + deamon.deamonName); 
        // get the deamon from the parsed XML source 
        deamon = createDeamonDocument(deamon); 
        deamon.save() // save 
       } else { 
        console.log('found ' + deamon.leagueName); 
       } 
      } 
     }) 
    })(deamons[i]); 
} 

참고 : 일부 db 작업이 포함되어 있으므로 테스트를 거치지 않았습니다.

+1

감사합니다. 지금은 방금 전 : deamons.forEach (function (deamon) {'.이 작동하지만 좋은 방법인지 궁금하니? 고마워, 자바 스크립트 범위에서 읽어 보겠습니다.) – p0lAris

+0

@flippex , "forEach"도 사용할 수 있습니다. 물론 "forEach"는 매우 간단하고 좋은 접근 방법입니다. –

+0

좋습니다. 감사합니다. 감사합니다. – p0lAris

1

당신은,이 항목을 검색하지 않습니다 count을 사용할 수 있습니다 : 이제 비동기 API 손보는, 나는 다음과 같은 코드가 있습니다. 그것은 MongoDB에의 count operation에 의존하는 :

Counts the number of documents in a collection. 
Returns a document that contains this count and as well as the command status. 
+0

이것을 다른 함수로 반환해야하므로 비동기 호출이나 동기 호출입니까? – p0lAris

+0

@ flippex17 이것은 비동기식 전화이므로 전화를 연결해야합니다. http://stackoverflow.com/questions/17181248/making-mongoose-js-queries-run-synchronously –

+0

방금 ​​일부 코드를 추가 했으므로 문제를 해결하는 데 도움을 주시면 감사하겠습니다. (나는'javascript'와'Node.js'를 처음 접했습니다.). 감사! – p0lAris

관련 문제