[MONGODB] MongoDB의에서 "그룹화"와 최대 ()를 선택합니다
MONGODBMongoDB의에서 "그룹화"와 최대 ()를 선택합니다
MongoDB를이 선택 문장을 변환 도와주세요 :
Select Name, Max(Value) From table1 Group By Name
나는이 문서를 읽어 http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group
하지만 여전히 해달라고 문서로 최대 () 메소드 대신 SUM ()를 적용하는 방법을 알고있다.
고맙습니다.
해결법
-
==============================
1.다음과 같이 나는 몽고 컬렉션을 만들었습니다.
다음과 같이 나는 몽고 컬렉션을 만들었습니다.
{ "_id" : ObjectId("4fb36bfd3d1c88bfa15103b1"), "name" : "bob", "value" : 5 } { "_id" : ObjectId("4fb36c033d1c88bfa15103b2"), "name" : "bob", "value" : 3 } { "_id" : ObjectId("4fb36c063d1c88bfa15103b3"), "name" : "bob", "value" : 7 } { "_id" : ObjectId("4fb36c0c3d1c88bfa15103b4"), "name" : "john", "value" : 2 } { "_id" : ObjectId("4fb36c103d1c88bfa15103b5"), "name" : "john", "value" : 4 } { "_id" : ObjectId("4fb36c143d1c88bfa15103b6"), "name" : "john", "value" : 8 } { "_id" : ObjectId("4fb36c163d1c88bfa15103b7"), "name" : "john", "value" : 6 }
그런 다음 자신의 이름과 최대 (값)에 의해 다음 코드 I 그룹을 사용하여
db.table1.group( {key: {name:true}, reduce: function(obj,prev) { if (prev.maxValue < obj.value) { prev.maxValue = obj.value; } }, initial: { maxValue: 0 }} );
결과는 다음과 같이 나타낸다
[ { "name" : "bob", "maxValue" : 7 }, { "name" : "john", "maxValue" : 8 } ]
그것은 통합 프레임 워크를 훨씬 간단합니다. 당신은 통합 프레임 워크를 사용하여 다음 코드와 같은 결과를 얻을 수 있습니다.
db.table1.aggregate( {$group:{_id:"$name", "maxValue": {$max:"$value"}}} );
-
==============================
2.집계 프레임 워크를 사용하여 :
집계 프레임 워크를 사용하여 :
db.table1.aggregate({$group:{'_id':'$name', 'max':{$max:'$value'}}}, {$sort:{'max':1}}).result
-
==============================
3.
var myresult = db.table1.aggregate([{ $group: { _id:"$Name", value: { $max: "$Value" } } }]); print(myresult)
-
==============================
4.MongoDB를 지원하기 때문에 기능 아래 맵리 듀스는해야한다.
MongoDB를 지원하기 때문에 기능 아래 맵리 듀스는해야한다.
db.employee.insert({name:"Tejas",Value:2}) db.employee.insert({name:"Tejas",Value:3}) db.employee.insert({name:"Varma",Value:1}) db.employee.insert({name:"Varma",Value:6}) var map=function(){ var key={name:this.name}; var value={value:this.Value}; emit(key,value); }; var reduce=function(key,values){ var max=-1; values.forEach(function(value){ if(max==-1){ max=value['value']; } if(max<value['value']){ max=value['value']; } }); return {max:max}; };
db.employee.mapReduce가 (지도, 감소 {{인라인 :에서 1}});
from https://stackoverflow.com/questions/10612660/select-max-with-group-by-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 몽구스를 사용하여 MongoDB의 문서에서 키를 삭제 (0) | 2019.12.08 |
---|---|
[MONGODB] MongoDB를 접두사 와일드 카드 : 전체 텍스트 검색 ($ 텍스트) 검색 문자열 부분을 찾아 (0) | 2019.12.08 |
[MONGODB] ) (MongoDB를의 collection.find에 콜백을 얻는 방법 (0) | 2019.12.08 |
[MONGODB] 어떻게 효율적으로 여러 개의 키와 "별개"수행? (0) | 2019.12.08 |
[MONGODB] 어떻게하여 MongoDB에서 '안처럼'연산자를 사용할 수 있습니다 (0) | 2019.12.08 |