728x90
반응형
질문 : 배열 크기가 1보다 큰 문서 쿼리
다음 형식의 문서가 포함 된 MongoDB 컬렉션이 있습니다.
{
"_id" : ObjectId("4e8ae86d08101908e1000001"),
"name" : ["Name"],
"zipcode" : ["2223"]
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"zipcode" : ["2224"]
}
현재 특정 배열 크기와 일치하는 문서를 가져올 수 있습니다.
db.accommodations.find({ name : { $size : 2 }})
name
배열에 2 개의 요소가있는 문서를 올바르게 리턴합니다. $gt
명령을 사용하여 name
필드의 배열 크기가 2보다 큰 모든 문서를 반환 할 수 없습니다.
db.accommodations.find({ name : { $size: { $gt : 1 } }})
name
배열을 가진 모든 문서를 어떻게 선택할 수 있습니까 (현재 데이터 구조를 수정하지 않고도 가능)?
답변
최신 정보:
mongodb 버전 2.2+의 경우 다른 답변 에서 @JohnnyHK 에 의해 설명 된 더 효율적인 방법입니다.
1. $ where 사용
db.accommodations.find( { $where: "this.name.length > 1" } );
그러나...
Javascript는이 페이지에 나열된 기본 연산자보다 느리게 실행되지만 매우 유연합니다. 자세한 내용은 서버 측 처리 페이지를 참조하십시오.
NamesArrayLength
추가 필드를 만들고 이름 배열 길이로 업데이트 한 다음 쿼리에 사용합니다.
db.accommodations.find({"NamesArrayLength": {$gt: 1} });
더 나은 솔루션이 될 것이며 훨씬 더 빠르게 작동 할 것입니다 (인덱스를 만들 수 있습니다).
출처 : https://stackoverflow.com/questions/7811163/query-for-documents-where-array-size-is-greater-than-1
728x90
반응형
'프로그래밍 언어 > Database' 카테고리의 다른 글
SQL Server에서 INSERT INTO로 데이터 내보내기 (0) | 2021.12.01 |
---|---|
MySQL 오류 "Every derived table must have its own alias" (0) | 2021.11.30 |
SQL Server의 DateTime2 vs DateTime (0) | 2021.09.16 |
mysqldump에서 덤프 파일을 복원하는 방법 (0) | 2021.09.15 |
SQL 원하지 않는 칼럼을 제외하고 SELECT 하는 방법 (0) | 2021.09.09 |