[MONGODB] 그 배열 필드 주어진 배열의 적어도 N 개의 요소를 포함하는 문서를 찾을
MONGODB그 배열 필드 주어진 배열의 적어도 N 개의 요소를 포함하는 문서를 찾을
그것은 제목의 말씀 기본적으로.
입력 : = myArray의 단어 배열
나는 필드가 모델이 배열 필드 wordsCollection.
나는 wordsCollections가 그 모델의 모든 문서를 찾을 수있는 방법에 myArray의 최소한 n 요소에서
해결법
-
==============================
1.우리가 우리의 컬렉션에서 다음과 같은 문서가 있다고 가정하자 :
우리가 우리의 컬렉션에서 다음과 같은 문서가 있다고 가정하자 :
{ "_id" : ObjectId("5759658e654456bf4a014d01"), "a" : [ 1, 3, 9, 2, 9, 0 ] } { "_id" : ObjectId("5759658e654456bf4a014d02"), "a" : [ 0, 8, 1 ] } { "_id" : ObjectId("5759658e654456bf4a014d03"), "a" : [ 0, 8, 432, 9, 34, -3 ] } { "_id" : ObjectId("5759658e654456bf4a014d04"), "a" : [ 0, 0, 4, 3, 2, 7 ] }
다음 입력 배열 및 N = 2
var inputArray = [1, 3, 0];
우리는 배열 필드가 집계 프레임 워크를 사용하여 주어진 배열의 적어도 n 개의 요소를 포함하는 문서를 반환 할 수 있습니다.
은 $ 일치를 선택 N에 배열의 길이보다 크거나 equals와 문서 만. 이것은 데이터의 양이 파이프 라인의 아래에서 처리 될 줄인다.
은 $ 편집하다 파이프 라인 연산자를 사용하여 $ COND 운영자와의 특수 작전 $$ KEEP을 사용하여 논리 조건 처리는 논리적 조건이 조건이 거짓 문서 "폐기"에 true 또는 $$ PRUNE있는 문서를 "유지".
우리의 경우, 조건은 우리가 $의 setIntersection 연산자를 사용을 계산 두 배열의 교차로의 $ 크기가 2보다 크거나 같은 경우 true를 반환 $ GTE입니다.
db.collection.aggregate( [ { "$match": { "a.1": { "$exists": true } } }, { "$redact": { "$cond": [ { "$gte": [ { "$size": { "$setIntersection": [ "$a", inputArray ] } }, 2 ]}, "$$KEEP", "$$PRUNE" ] }} ] )
이는 생산 :
{ "_id" : ObjectId("5759658e654456bf4a014d01"), "a" : [ 1, 3, 9, 2, 9, 0 ] } { "_id" : ObjectId("5759658e654456bf4a014d02"), "a" : [ 0, 8, 1 ] } { "_id" : ObjectId("5759658e654456bf4a014d04"), "a" : [ 0, 0, 4, 3, 2, 7 ] }
-
==============================
2.사용 집계.
사용 집계.
$ 일치 집계 파이프 라인에서는 $ 크기와 $ GTE을 사용할 수 있습니다
from https://stackoverflow.com/questions/37725694/find-documents-whose-array-field-contains-at-least-n-elements-of-a-given-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를가 ObjectId가에 문자열에서 _id 필드에 가입 (0) | 2019.12.19 |
---|---|
[MONGODB] MongoDB의 단일 문서 크기 제한 16메가바이트입니다 (0) | 2019.12.19 |
[MONGODB] 변환 ISO 날짜에 타임 스탬프에 몽고 쿼리 (0) | 2019.12.19 |
[MONGODB] MongoDB의에서 배열의 내부 배열 내부의 업데이트 포함 된 개체 (0) | 2019.12.18 |
[MONGODB] MongoDB의에서 필드의 실제의 형태를 돌려줍니다 (0) | 2019.12.18 |