2015-02-01 3 views
0

두 개의 문서, buyerssubmission (제출은 구매자의 하위 문서 임)이 있습니다.몽구스 - 하위 문서 쿼리, 부모와 자식의 요소 비교

mongoose.model('Buyer',{ 
    username: String, 
    credit: Number, 
    forms:[mongoose.model('Submission').schema] 
}); 

mongoose.model('Submission',{ 
    title: String, 
    bid: Number, 
}); 

각 구매자는 credit 속성을 가지고 있으며, 각 submission는 입찰 속성이 있습니다. 입찰가가 parent.credit보다 낮은 모든 제출을 검색하는 쿼리를 작성하고 싶습니다.

상위 - 하위 속성 비교를 기반으로 찾을 수 있습니까?

답변

2

use the $where가 아니라면 일반적인 찾기 쿼리를 사용하여 mongodb의 두 필드를 비교할 수는 없지만 각 문서의 해당 자바 스크립트를 실행하기 때문에 속도가 매우 느립니다.

그러나, 당신이 원하는 것은 집계 파이프 라인 가능합니다 : 입찰는 신용보다 낮은 곳은 당신에게 항목을 얻을 것이다

db.buyers.aggregate([ 
    {$unwind: "$forms"}, 
    {$project: { 
     username : 1, 
     credit : 1, 
     forms : 1, 
     lower : {"$cond" : [{$lt: [ '$forms.bid', '$credit']}, 1, 0]} 
    }}, 
    {$match : {lower : 1}} 
]); 

.

관련 문제