복붙노트

[MONGODB] 어떻게 몽구스 모델의 모든 수를 얻으려면?

MONGODB

어떻게 몽구스 모델의 모든 수를 얻으려면?

어떻게 데이터가 저장되어있는 모델의 수를 알 수 있는가? 이 Model.count ()의 방법은, 그러나 그것은 작동하지 않습니다.

var db = mongoose.connect('mongodb://localhost/myApp');
var userSchema = new Schema({name:String,password:String});
userModel =db.model('UserList',userSchema);        
var userCount = userModel.count('name');

USERCOUNT 실제 수를 얻을 수라는 방법 object를인가?

감사

해결법

  1. ==============================

    1.작품 아래의 코드. countDocuments의 사용을합니다.

    작품 아래의 코드. countDocuments의 사용을합니다.

     var mongoose = require('mongoose');
     var db = mongoose.connect('mongodb://localhost/myApp');
     var userSchema = new mongoose.Schema({name:String,password:String});
     var userModel =db.model('userlists',userSchema);
     var anand = new userModel({ name: 'anand', password: 'abcd'});
     anand.save(function (err, docs) {
       if (err) {
           console.log('Error');
       } else {
           userModel.countDocuments({name: 'anand'}, function(err, c) {
               console.log('Count is ' + c);
          });
       }
     }); 
    
  2. ==============================

    2.코드가 작동하지 않는 이유는 카운트 기능이 비동기이기 때문에, 그것은 기적 값을 반환하지 않는 것입니다.

    코드가 작동하지 않는 이유는 카운트 기능이 비동기이기 때문에, 그것은 기적 값을 반환하지 않는 것입니다.

    다음은 사용의 예입니다 :

    userModel.count({}, function( err, count){
        console.log( "Number of users:", count );
    })
    
  3. ==============================

    3.collection.count는 사용되지 않으며, 향후 버전에서 제거 될 예정입니다. 대신 사용 collection.countDocuments 또는 collection.estimatedDocumentCount.

    collection.count는 사용되지 않으며, 향후 버전에서 제거 될 예정입니다. 대신 사용 collection.countDocuments 또는 collection.estimatedDocumentCount.

    userModel.countDocuments(query).exec((err, count) => {
        if (err) {
            res.send(err);
            return;
        }
    
        res.json({ count: count });
    });
    
  4. ==============================

    4.당신은 인수로 객체를 제공한다

    당신은 인수로 객체를 제공한다

    userModel.count({name: "sam"});
    

    또는

    userModel.count({name: "sam"}).exec(); //if you are using promise
    

    또는

    userModel.count({}); // if you want to get all counts irrespective of the fields
    

    몽구스의 최신 버전에서 사용할 수 있도록 지원되지 않습니다 () 계산

    userModel.countDocuments({name: "sam"});
    
  5. ==============================

    5.몽구스 문서와 벤자민에 의해 대답에 명시된 바와 같이,이 방법 Model.count ()는 지원되지 않습니다. 대신에 수를 () 사용하는, 대안은 다음과 같다 :

    몽구스 문서와 벤자민에 의해 대답에 명시된 바와 같이,이 방법 Model.count ()는 지원되지 않습니다. 대신에 수를 () 사용하는, 대안은 다음과 같다 :

    Model.countDocuments (filterObject, 콜백)

    얼마나 많은 문서 카운트는 컬렉션의 필터와 일치. 필터로서 빈 오브젝트를 전달하면 {} 전체 컬렉션 스캔을 실행한다. 컬렉션이 큰 경우, 다음과 같은 방법을 사용할 수 있습니다.

    Model.estimatedDocumentCount ()

    이 모델 방법은 MongoDB의 컬렉션에서 문서의 수를 추정하고있다. 그것은 전체 컬렉션 거치지 컬렉션 메타 데이터를 사용하기 때문에이 방법은 빠른 이전 countDocuments ()보다 길다. 메소드 이름대로 메타 메소드 실행 시점에서 수집 문서의 실제 횟수를 반영하지 않을 수도 그러나, DB 및 구성에 따라, 결과 추정치이다.

    두 가지 방법은 다음 두 가지 방법 중 하나를 실행할 수있는 몽구스 쿼리 개체를 반환합니다. 나중에 쿼리를 실행하려는 경우) (.exec 사용합니다.

    1) 콜백 함수 합격

    예를 들어,) (.countDocuments를 사용하여 콜렉션에있는 모든 문서를 수 :

    SomeModel.countDocuments({}, function(err, count) {
        if (err) { return handleError(err) } //handle possible errors
        console.log(count)
        //and do some other fancy stuff
    })
    

    또는,) (.countDocuments를 사용하여 특정 이름을 가진 콜렉션에있는 모든 문서를 수 :

    SomeModel.countDocuments({ name: 'Snow' }, function(err, count) {
        //see other example
    }
    

    2)를 사용하여 그 때는 ()

    몽구스 쿼리 그 때는있다 () 그것의 "thenable"그래서. 이것은 편의를위한 자체가 약속하지 쿼리합니다.

    예를 들어, .estimatedDocumentCount ()를 사용하여 콜렉션에있는 모든 문서를 수 :

    SomeModel
        .estimatedDocumentCount()
        .then(count => {
            console.log(count)
            //and do one super neat trick
        })
        .catch(err => {
            //handle possible errors
        })
    

    도움이 되었기를 바랍니다!

  6. ==============================

    6.전에 말했듯이, 당신이 코드는이 방식으로 작동하지 않습니다. 그에 대한 해결책은 콜백 함수를 사용하는 것입니다,하지만 당신은 그것이 '콜백 지옥'에 당신을 수행 할 것이라고 생각한다면, 당신은 "Promisses"를 검색 할 수 있습니다.

    전에 말했듯이, 당신이 코드는이 방식으로 작동하지 않습니다. 그에 대한 해결책은 콜백 함수를 사용하는 것입니다,하지만 당신은 그것이 '콜백 지옥'에 당신을 수행 할 것이라고 생각한다면, 당신은 "Promisses"를 검색 할 수 있습니다.

    콜백 함수를 사용 가능 용액 :

    //DECLARE  numberofDocs OUT OF FUNCTIONS
         var  numberofDocs;
         userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection
    

    당신이 쿼리를 기반으로 문서의 수를 검색하려는 경우, 당신은이 작업을 수행 할 수 있습니다 :

     userModel.count({yourQueryGoesHere}, setNumberofDocuments);
    

    문서의 일련 번호는 별도의 기능입니다 :

    var setNumberofDocuments = function(err, count){ 
            if(err) return handleError(err);
    
            numberofDocs = count;
    
          };
    

    지금 당신은 어디서든 getFunction와 문서의 수를 얻을 수 있습니다 :

         function getNumberofDocs(){
               return numberofDocs;
            }
     var number = getNumberofDocs();
    

    또한, 콜백, 예를 사용하여 동기 일 안에이 비동기 기능을 사용 :

    function calculateNumberOfDoc(someParameter, setNumberofDocuments){
    
           userModel.count({}, setNumberofDocuments); //this search all DOcuments in a Collection
    
           setNumberofDocuments(true);
    
    
    } 
    

    그것은 다른 사람들을 도울 수 있기를 바랍니다. :)

  7. from https://stackoverflow.com/questions/10811887/how-to-get-all-count-of-mongoose-model by cc-by-sa and MIT license