복붙노트

[MONGODB] 몽구스의 최대 값을 얻을

MONGODB

몽구스의 최대 값을 얻을

방법 몽구스 쿼리에서 최대 값을 얻을 수 있습니다. SQL에 쉽다

SELECT MAX(LAST_MOD) FROM table1
Where field1=1

난 몽구스에 상기 SQL 코드 등가 원하는 (Node.js를)

해결법

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

    1.MongoDB를이 최대 / 최소를 지원하지만, 실제 응용 프로그램에서 사용하지 않는 것이 좋습니다 :

    MongoDB를이 최대 / 최소를 지원하지만, 실제 응용 프로그램에서 사용하지 않는 것이 좋습니다 :

    http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

    당신은 거의 같은 결과를 가질 수있다 :

    Model.findOne({ field1 : 1 }).sort(last_mod, 1).run( function(err, doc) {
         var max = doc.last_mod;
    });
    
  2. ==============================

    2.나는 일에 대한 다른 답변을 얻을 수 없었다. 아마도 내가 몽구스 (mongoose@3.0.1)의 최신 버전을 사용하고 있습니다.

    나는 일에 대한 다른 답변을 얻을 수 없었다. 아마도 내가 몽구스 (mongoose@3.0.1)의 최신 버전을 사용하고 있습니다.

    이것은 나를 위해 일한 :

    Table1.findOne()
        .where({field1: 1})
        .sort('-LAST_MOD')
        .exec(function(err, doc)
        {
            var max = doc.LAST_MOD;
            // ...
        }
    );
    
  3. ==============================

    3.당신은 (예를 들어 제품에 대한) 컬렉션의 하나 개의 레코드를 반환이를 사용할 수 있습니다 :

    당신은 (예를 들어 제품에 대한) 컬렉션의 하나 개의 레코드를 반환이를 사용할 수 있습니다 :

    Goods
       .find({})
       .select({"price"})
       .sort({"price" : -1})
       .limit(1)
       .exec(function(err, doc){
          let max_price = doc[0].price;
    });
    
  4. ==============================

    4.나는 다음과 같은 답을 제공하고 내 대답은 이유를 설명하기 전에 나는 러시아 동료를 upvoted.

    나는 다음과 같은 답을 제공하고 내 대답은 이유를 설명하기 전에 나는 러시아 동료를 upvoted.

    나의 이해는 목표는 모델 컬렉션의 밖으로 정렬 그들을 특정 순서와 거기에서 단지 첫 번째 항목을 어떤의 목록을 취할 것입니다.

    그래서 일단 우리는 그렇게 같은 최소한의 쿼리로 시작 :

    const minQuery = Model.find({}).sort().limit(1);
    

    공지 사항 나는 () findOne ()에 반대 찾기를 사용하고, 나는 방법으로 자사의 더 성능이 좋은 생각합니다.

    그런 다음 우리는 종류,이 경우에 나는 나에게 우리가 정렬 무엇의 아이디어를 제공하는 모델로 제품의 동료 예를 취할 것입니다 :

    const minQuery = Goods.find({}).sort({ price: 1 }).limit(1);
    

    여기에서 중요한 부분은 나는 단지 첫 번째 좋은 제한 방법은 당신이보고되었는지에 온다 최소 가격과 먹으 렴로 하나가 될 것입니다 때문에 첫 선을 다시 얻으려면입니다 :

    const minQuery = Goods.find({}).sort({ price: 1 }).limit(1);
    

    왜이으로 제한 할 (1)를 추가 않았다; 내 동료처럼 위나요?

    우리는 항상 우리의 MongoDB를 데이터베이스에서와 한계 (1)을 사용하므로 반환받을 레코드 수를 최소화하려는 때문에 이런 일이 발생 보장합니다. 다시 목표는 더 확대됨 수와 기록의 수천 우리 Nodejs 서버를 포격 할 수 없습니다.

    기록의 거 대 한 숫자에 반대 몽고는 하나의 기록을 다시 통신하는 제한 (1) 보장하지만 그래서. 하지만 난 그냥 내가 위에서 upvoted하는 비슷한 대답의 다른 변형을 제공하고 있지 않다.

    나는 또 다른 단계에 추가하기 위하여려고하고있다. 그것은 다시 쿼리 온다 나는 단지이 재화의 가격에 관심 때문에, 나는 제품 이름 또는 무엇이든 상관하지 않습니다.

    나는 그 때는 () 문에 추가 반환받을 상품의 목록을 가지고 거기에서 첫 선을 가지고 말하고과 같이 나에게 가격을 제공하기 위하여려고하고있다 :

    const minQuery = Goods.find({}).sort({ price: 1 }).limit(1).then(goods => goods[0].price);
    

    마음에 내가 사용하는 용어를 유지합니다. 나는 상품의 목록을 취할 것입니다. 내가 제한 (1)을 사용하기 때문에 쿼리는 그 자체로 하나의 모델을 해결할 것을 의미하지 않는다. 내가 찾기 ({}) 도우미를 사용했기 때문에, 그 수단이 나 상품 또는 제품의 배열의 목록을 다시 제공합니다. 나는 일에 그 목록을 제한 그래서 비록 우리가 아니라 이것은 그 자체로 단지 하나의 모델이라고 얻기 위하여려고하는 것을 의미하지 않는다.

    그것은 여전히 ​​모델의 배열 될 것하지만 그냥 거기에 하나있을 것입니다.

    우리는 여전히 우리가 ({}) 찾을 사용하기 때문에 배열 될 것입니다하지만 배열에서 하나의 좋은있을 것입니다 인식 할 필요가 그래서.

    나는이 일을하고 그 이유는 API 응답을 마사지하는 것입니다. 나는이 분의 쿼리를 복용하고, 그 때는에 추가하여 다른 곳에서는 미래에 이후 그 때는 ()을 추가하면 그 때는 ()를 수단을 추가하여 () 그것은 단지 최소의 가격으로 호출됩니다.

    우리는 쿼리에 대한 그 때는 (최소 가격 =>)에 추가한다면, 그것은 단지 최소 가격은, 그것이 우리가 걱정하는 것이 바로 최저 가격으로 호출됩니다 호출됩니다.

    그 때는 그래서 () 자신이 쿼리에 대한 종료를 제공하기 위해 단지이다.

    그래서 지금 그것을 다른 방법으로 주위를 할, 우리가 할 :

    const maxQuery = Goods.find({}).sort({ price: -1 }).limit(1).then(goods => goods[0].price);
    
  5. ==============================

    5.그것은 완벽하게 잘 작동합니다.

    그것은 완벽하게 잘 작동합니다.

    Model.findOne().sort({
            "field": -1
        });
    
  6. from https://stackoverflow.com/questions/10572592/get-max-value-in-mongoose by cc-by-sa and MIT license