[MONGODB] MongoDB를 - 배열의 마지막 요소에 쿼리?
MONGODBMongoDB를 - 배열의 마지막 요소에 쿼리?
나는 MongoDB를 구문 찾기 {array.0.field : "값을"} 지원 알지만, 내가 특별히 내가 인덱스를 모르는 의미 배열의 마지막 요소에 대해이 작업을 수행하고자합니다. 나는 운이에 대한 운영자의 어떤 종류가 있는가, 또는 무엇입니까?
편집 : 내가 배열의 마지막 요소의 필드에 특정 값이 일치하는 경우에만 반환 문서) (찾을 원하는 명확합니다.
해결법
-
==============================
1.3.2이 가능하다. 첫 번째 프로젝트 때문에 myField는 마지막 요소를 포함하고 myField에 일치합니다.
3.2이 가능하다. 첫 번째 프로젝트 때문에 myField는 마지막 요소를 포함하고 myField에 일치합니다.
db.collection.aggregate([ { $project: { id: 1, myField: { $slice: [ "$myField", -1 ] } } }, { $match: { myField: "myValue" } } ]);
-
==============================
2.$ 슬라이스를 사용합니다.
$ 슬라이스를 사용합니다.
db.collection.find( {}, { array_field: { $slice: -1 } } )
편집 : 당신은 사용할 수있다 {<필드> : {$ elemMatch : {<쿼리 1>, <쿼리 2>, ...}}} 일치하는 항목을 찾습니다.
그러나 당신이 찾고있는 정확하게 제공하지 않습니다. 아직 MongoDB가 가능하다 생각하지 않습니다.
-
==============================
3.여기 공식 몽고 구글 그룹에 게시, 그들의 직원의 대답을 얻었다. 내가 무엇을 찾고 있어요 것은 가능하지 않은 것 같습니다. 난 그냥 다른 스키마 방법을 사용하겠습니다.
여기 공식 몽고 구글 그룹에 게시, 그들의 직원의 대답을 얻었다. 내가 무엇을 찾고 있어요 것은 가능하지 않은 것 같습니다. 난 그냥 다른 스키마 방법을 사용하겠습니다.
-
==============================
4.당신은 일반 쿼리에서 집계 함수를 사용하여 $ EXPR (3.6 몽고 버전 연산자)를 사용할 수 있습니다.
당신은 일반 쿼리에서 집계 함수를 사용하여 $ EXPR (3.6 몽고 버전 연산자)를 사용할 수 있습니다.
집계 비교 연산자 대 쿼리 연산자를 비교.
스칼라 배열
db.col.find({$expr: {$gt: [{$arrayElemAt: ["array", -1]}, value]}})
내장 배열의 - 도트 표기법을 사용하여 $ arrayElemAt 표현 마지막 요소를 투영합니다.
db.col.find({$expr: {$gt: [{"$arrayElemAt": ["$array.field", -1]}, value]}})
봄 @query 코드
@Query("{$expr:{$gt:[{$arrayElemAt:[\"array\", -1]}, ?0]}}") ReturnType MethodName(ArgType arg);
-
==============================
5.확실하지 성능에 대해,하지만 나를 위해 잘 작동합니다 :
확실하지 성능에 대해,하지만 나를 위해 잘 작동합니다 :
db.getCollection('test').find( { $where: "this.someArray[this.someArray.length - 1] === 'pattern'" } )
-
==============================
6.당신이 $ 푸시하고 항상 쿼리 array.0 가장 최근에 추가 된 요소를 얻을 때마다 0 : 당신은 $ 위치를 사용할 수 있습니다. 물론 다음, 당신은 새로운 "마지막"요소를 얻을 수있을 실 거예요.
당신이 $ 푸시하고 항상 쿼리 array.0 가장 최근에 추가 된 요소를 얻을 때마다 0 : 당신은 $ 위치를 사용할 수 있습니다. 물론 다음, 당신은 새로운 "마지막"요소를 얻을 수있을 실 거예요.
-
==============================
7.버전 3.6을 사용 집계는 동일한을 달성했다.
버전 3.6을 사용 집계는 동일한을 달성했다.
db.getCollection('deviceTrackerHistory').aggregate([ { $match:{clientId:"12"} }, { $project: { deviceId:1, recent: { $arrayElemAt: [ "$history", -1 ] } } } ])
-
==============================
8."12345"과 "값"보다 마지막 요소의 값이 $ GT는 다음, 내가 원하는 경우 주문 번호 응답 사용 $의 arrayElemAt 위해? 방법은 $ EXPR로 만들려면? 감사!
"12345"과 "값"보다 마지막 요소의 값이 $ GT는 다음, 내가 원하는 경우 주문 번호 응답 사용 $의 arrayElemAt 위해? 방법은 $ EXPR로 만들려면? 감사!
내장 배열의 - 도트 표기법을 사용하여 $ arrayElemAt 표현 마지막 요소를 투영합니다.
db.col.find({$expr: {$gt: [{"$arrayElemAt": ["$array.field", -1]}, value]}})
from https://stackoverflow.com/questions/28680295/mongodb-query-on-the-last-element-of-an-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의에서 중복 제거 (0) | 2019.12.08 |
---|---|
[MONGODB] 하여 MongoDB에서 제공된 배열의 조합을 포함하는 배열 필드 매칭 (0) | 2019.12.08 |
[MONGODB] Node.js를에서 MongoDB를에 연결 ECONNREFUSED 오류 (0) | 2019.12.08 |
[MONGODB] MongoDB의 노드 체크 OBJECTID이 유효한 경우 (0) | 2019.12.08 |
[MONGODB] 유성 : 컬렉션, 변수, 출판 및 구독 이름 사이의 차이점은 무엇입니까? (0) | 2019.12.08 |