[MONGODB] MongoDB의의 열 가장 높은 값을 얻기
MONGODBMongoDB의의 열 가장 높은 값을 얻기
나는 몽고 문서에 대한 열에서 가장 높은 값을 받고 몇 가지 도움있었습니다. 나는 그것을 분류하고, 위 / 아래를 얻을 수 있지만, 나는 확신을 할 수있는 더 좋은 방법이 있어요 수 있습니다.
나는 다음과 같은 (서로 다른 조합을) 시도 :
transactions.find("id" => x).max({"sellprice" => 0})
그러나 그것은 오류를 던지고 유지합니다. 정렬과 위 / 아래를 얻기 외에 그것을 할 수있는 좋은 방법은 무엇입니까?
감사합니다!
해결법
-
==============================
1.최대 ()는 당신이 몽고에 대한 SQL에서 그것을 기대하는대로 작동하지 않습니다. 이것은 아마도 미래 버전에서 변경 될 것입니다하지만 지금의로, 최대, 최소는 샤딩 주로 내부적으로 인덱스 키를 사용할 수 있습니다.
최대 ()는 당신이 몽고에 대한 SQL에서 그것을 기대하는대로 작동하지 않습니다. 이것은 아마도 미래 버전에서 변경 될 것입니다하지만 지금의로, 최대, 최소는 샤딩 주로 내부적으로 인덱스 키를 사용할 수 있습니다.
http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers 참조
불행하게도 최대 값을 얻을 수있는 지금 유일한 방법을 그 값의 컬렉션을 내림차순 정렬하고 첫 번째 걸릴 것입니다.
transactions.find("id" => x).sort({"sellprice" => -1}).limit(1).first()
-
==============================
2.잔인한 수도 정렬. 당신은에 의해 그룹을 할 수
잔인한 수도 정렬. 당신은에 의해 그룹을 할 수
db.messages.group( {key: { created_at:true }, cond: { active:1 }, reduce: function(obj,prev) { if(prev.cmax<obj.created_at) prev.cmax = obj.created_at; }, initial: { cmax: **any one value** } });
-
==============================
3.
db.collectionName.aggregate( { $group : { _id : "", last : { $max : "$sellprice" } } } )
-
==============================
4.예 집계를 계산하기위한 쉘 코드를 MongoDB를.
예 집계를 계산하기위한 쉘 코드를 MongoDB를.
그룹 (많은 응용 프로그램)에 대한 MongoDB를 수동 항목을 참조하십시오 : http://docs.mongodb.org/manual/reference/aggregation/group/#stage._S_group
아래에서 $가 컬렉션의 키와 목표 변수로 바르 대체합니다.
db.activity.aggregate( { $group : { _id:"$your_collection_key", min: {$min : "$your_target_variable"}, max: {$max : "$your_target_variable"} } } )
-
==============================
5.사용 골재 () :
사용 골재 () :
db.transactions.aggregate([ {$match: {id: x}}, {$sort: {sellprice:-1}}, {$limit: 1}, {$project: {sellprice: 1}} ]);
-
==============================
6.그것은 당신의 요구 사항에 따라 작동합니다.
그것은 당신의 요구 사항에 따라 작동합니다.
transactions.find("id" => x).sort({"sellprice" => -1}).limit(1).first()
-
==============================
7.컬럼의 인덱스 다음 정렬을 확인해야하는 경우, 가정 몽고은 정렬 된 집합을 얻기 위해 인덱스를 사용합니다. 그렇지 않으면 볼 수있는 가장 큰 값의 메모를 유지 컬렉션을 반복하는 것이 더 효율적입니다. 예를 들면
컬럼의 인덱스 다음 정렬을 확인해야하는 경우, 가정 몽고은 정렬 된 집합을 얻기 위해 인덱스를 사용합니다. 그렇지 않으면 볼 수있는 가장 큰 값의 메모를 유지 컬렉션을 반복하는 것이 더 효율적입니다. 예를 들면
max = nil coll.find("id" => x).each do |doc| if max == nil or doc['sellprice'] > max then max = doc['sellprice'] end end
(사과는 내 루비의 비트 끈적 끈적, 나는 오랫동안 그것을 사용하지 않은 경우 -하지만 일반적인 접근 방식은 코드에서 명확해야한다.)
-
==============================
8.나는 (내 _id가 정렬입니다 가정) 최대 _id를 얻을 수 원한다면 내가 루비 드라이버를 (필자는 바닥에 MongoDB를 - 루비 태그를 보았다)를 사용하여 한 가정, 나는 다음과 같은 일을 할 것입니다. 내 구현에서는, 내 _id는 정수이었다.
나는 (내 _id가 정렬입니다 가정) 최대 _id를 얻을 수 원한다면 내가 루비 드라이버를 (필자는 바닥에 MongoDB를 - 루비 태그를 보았다)를 사용하여 한 가정, 나는 다음과 같은 일을 할 것입니다. 내 구현에서는, 내 _id는 정수이었다.
result = my_collection.find({}, :sort => ['_id', :desc]).limit(1)
컬렉션의 최소 _id를 얻으려면, 단지 변화 : 제품 설명에 : ASC
-
==============================
9.다음 쿼리는 같은 일을 : db.student.find ({}, { "_ID '1}) 분류 (_ {ID : -1}).. 한계 (1)
다음 쿼리는 같은 일을 : db.student.find ({}, { "_ID '1}) 분류 (_ {ID : -1}).. 한계 (1)
나를 위해,이 결과 다음과 같은 생산 : {: NumberLong으로 (10934) "_id"}
from https://stackoverflow.com/questions/4762980/getting-the-highest-value-of-a-column-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 날짜를 오늘에 의해 생성 된 결과를 찾을 수 MongoDB를 (0) | 2019.12.22 |
---|---|
[MONGODB] MongoDB를은 다음 몽고 쉘에서 ObjectId가에서 날짜 범위 쿼리를 수행 (0) | 2019.12.22 |
[MONGODB] MongoDB를에 수집 당 하나 이상의 스키마를 사용하여 (0) | 2019.12.22 |
[MONGODB] MongoDB를의 bind_ip은 설정하지 않으면 0.0.0.0으로 작동하지 않습니다 (0) | 2019.12.22 |
[MONGODB] 명령을 삽입하여 MongoDB의 "upsert"옵션이 있습니까? (0) | 2019.12.22 |