3.4 이후 MongoDB를 사용하면을 사용할 수 있습니다. 당신이 할 수없는 경우
db.zips.aggregate([
{ "$group": {
"_id": null,
"lower_ny": {
"$sum": {
"$cond": [{ "$in": [ "$zip", lower_ny_zipcodes ] },1,0]
}
},
"east_ny": {
"$sum": {
"$cond": [{ "$in": [ "$zip", east_ny_zipcodes ] },1,0]
}
},
"upper_ny": {
"$sum": {
"$cond": [{ "$in": [ "$zip", upper_ny_zipcodes ] },1,0]
}
}
}}
])
다음 MongoDB를 2.6 이후 $setIsSubset
가 : 23,210 배열에 대한 비교를 얻을 수 있습니다. 구문과 의도가 약간 다릅니다. 하지만 당신의 목록은 문제가되지 않습니다 그래서 "독특한"입니다 본질적으로
db.zips.aggregate([
{ "$group": {
"_id": null,
"lower_ny": {
"$sum": {
"$cond": [{ "$setIsSubset": [ ["$zip"], lower_ny_zipcodes ] },1,0]
}
},
"east_ny": {
"$sum": {
"$cond": [{ "$setIsSubset": [ ["$zip"], east_ny_zipcodes ] },1,0]
}
},
"upper_ny": {
"$sum": {
"$cond": [{ "$setIsSubset": [ ["$zip"], upper_ny_zipcodes ] },1,0]
}
}
}}
])
그것은 작업으로 전송 BSON 내용으로 확장됩니다 당신의 외부에서 정의 된 배열 내용, 단지 논리적 비교입니다.
물론 배열의 값은 "문자열"이어야 일치 할 수 있습니다.
east_ny_zipcodes = [11209, 11210, 11211, ...].map(n => n.toString());
당신은'$의 cond'와'$의 그룹 '을 사용하고 자신의 콘드의 각 범주에 대한 배열을 비교할 수 있습니다 : 당신이하지 않았다면하지만 쉽게 이루어집니다. db.collection_name.aggregate'같은 뭔가 ({ "$ 그룹": { "_id": 널 (null), "east_ny": { "$ 합계": { "$ 콘드"[ { "$에서 "[ "$ 지퍼 " "east_ny_zipcodes " ] } 0] }}} })'. '$ match' 단계를'$ or'와 함께 추가하여 파이프 라인에서 처리 할 우편 번호를 제한 할 수 있습니다. – Veeram