반응형
배열의 첫 번째 항목에서 일치하도록 MongoDB 쿼리
나는 알고 있습니다.$in배열에서 항목의 존재를 검색하는 연산자이지만 항목이 배열의 첫 번째 위치에 있는 경우에만 일치하는 항목을 찾습니다.
예를 들어:
{
"_id" : ObjectId("0"),
"imgs" : [
"http://foo.jpg",
"http://bar.jpg",
"http://moo.jpg",
]
},
{
"_id" : ObjectId("1"),
"imgs" : [
"http://bar.jpg",
"http://foo.jpg",
"http://moo.jpg",
]
}
다음과 유사한 질문을 찾고 있습니다.
db.products.find({"imgs[0]": "http://foo.jpg"})
이렇게 하면 다음을 반환할 수 있습니다.ObjectId("0")하지만 아닙니다.ObjectId("1")배열의 첫 번째 이미지만 확인하기 때문입니다.
어떻게 이를 달성할 수 있습니까?단일 문자열을 포함하는 별도의 필드를 만들 수 있습니다.firstImg하지만 제가 여기서 추구하는 것은 그것이 아닙니다.
당신이 원하는 것을 믿습니다.imgs.0예를 들어, 예제 문서를 보면 다음과 같이 말합니다.db.products.find({"imgs.0": "http://foo.jpg"})
참조 배열 인덱스는 첫 번째 수준 배열에만 사용할 수 있습니다.Mongo는 더 이상 어레이 인덱스 검색을 지원하지 않습니다.
배열 인덱스에 도트 표기법을 사용할 수 있습니다.
db.products.find({"imgs.0": "http://foo.jpg"})
MongoDB는 도트 표기법을 사용하여 배열의 요소에 액세스하고 하위 문서의 필드에 액세스합니다.
0 기반 인덱스 위치를 기준으로 배열의 요소에 액세스하려면 배열 이름을 점(.) 및 0 기반 인덱스 위치와 연결하고 따옴표로 묶습니다.
'<array>.<index>'
또한 관련 어레이 설명서에 대한 링크가 있습니다.
언급URL : https://stackoverflow.com/questions/19899299/querying-mongodb-to-match-in-the-first-item-in-an-array
반응형
'programing' 카테고리의 다른 글
| MVVM을 사용해야 하는 이유 (0) | 2023.05.04 |
|---|---|
| 마지막 커밋을 실행 취소하는 방법 (0) | 2023.05.04 |
| TypeError 가져오기: __init_() 항목이 있는 하위 테이블 뒤에 상위 테이블을 추가할 때 필요한 위치 인수 'on_delete'가 하나 누락되었습니다. (0) | 2023.05.04 |
| Objective-C에서 -init 메서드를 비공개로 할 수 있습니까? (0) | 2023.05.04 |
| 컨테이너에 있는 Azure blob 파일의 이름 목록을 가져오는 중? (0) | 2023.05.04 |