mongodb의 grouping 기능을 테스트하고 있습니다.MongoDB 그룹화는 여러 문서와 일치하더라도 하나의 문서 만 반환합니까?
group 함수는 객체를 인수로 취합니다. 객체 내에는 cond
이라는 키가 있으며이 중 값은 문서와 일치하는 쿼리로 사용될 수 있습니다.
하나 이상의 문서와 일치하는 유효한 쿼리를 전달 중입니다. 그러나 그룹화는 마지막으로 일치 된 문서의 결과 만 반환합니다. 나는 group
함수가 모든 일치 된 문서 결과를 반환하도록하기 위해 여기에 뭔가 빠졌다고 생각합니다.
내가이 짓을하는 단계는,
db.test.insert({user:{name:"xxxx1"}});
db.test.insert({user:{name:"xxxx2"}});
db.test.insert({user:{name:"xxxx3"}});
db.test.insert({user:{name:"xxxx4"}});
db.test.insert({user:{name:"xxxx5"}});
db.test.insert({user:{name:"xxxx6"}});
db.test.group({
initial:{name:'', id:''},
reduce:function(d, o){o.name = d.user.name; o.id=d._id;},
finalize:function(o){},
cond:{"user.name":/^x/}
});
위의 명령을 반환
[
{
"name" : "xxxx6", "id" : ObjectId("4edf72baec65faac52976e72")
}
]
그것의 마지막 삽입 된 문서
.일치하는 결과를 모두 얻으려면 어떻게해야합니까?
감사
는 사실 조회 결과는 자동 완성의 목적을 위해 이용 될 것입니다,하지만 난 그것에 대해 완전한 문서를 보낼 해달라고 나는 또한 {ID 표준에 쿼리 결과를 포맷하고 싶어 ''이름 : '', 이메일 : ''사진 : ''}. 이전에는 수동으로 형식을 지정하고있었습니다 (쿼리 결과를 가져 와서 모든 결과 문서를 반복하고 새로운 형식을 작성). 나중에 나는 그것이 몽고 그 자체를 사용하여 그것을 할 수 있다는 것을 알게되었다. 그리고 내가 거기에서 뭘하려고하는지. 나는 쿼리를 사용하여 모든 일치하는 문서를 가져오고 그룹화를 사용하여 형식을 지정하려고합니다. 그것이 몽고와 함께 가능합니까! –
내 업데이트가 도움이 되었습니까? –
'map reduce를 사용하여 출력 형식을 지정하면 의도 한 용도가 아니며 이에 대한 쿼리 속도가 느려지 게됩니다. ' 이미 당신이 말한 모든 것을하고 있기 때문입니다. 나는 데이터를 일반화하고 다양한 컬렉션에서 공통 패턴을 얻도록 서식을 지정해야합니다. 쿼리 결과를 공통 형식으로 일반화해야한다면 수동으로 여러 위치에 코드를 작성해야합니다. 대신 DB를 선호합니다. –