반응형
MongoDB에서 배열의 n번째 요소 가져오기
MongoDB에 있는 문서의 일부로 객체 배열을 저장하고 있습니다.예를 들어 배열의 4번째 요소에 대해서만 쿼리하려면 어떻게 해야 합니까?그래서 저는 전체 배열을 제거하는 것이 아니라 4번째 요소만 제거하는 것을 원합니다.
사용하다$slice
.
db.foo.find({ bar : "xyz" } , { my_array : { $slice : [n , 1] } } )
foo 컬렉션에 있는 모든 문서의 배열 "my_array"의 n번째 요소인 bar = "xyz"를 검색합니다.
MongoDB 설명서의 다른 예는 다음과 같습니다.
db.posts.find({}, {comments:{$slice: 5}}) // first 5 comments
db.posts.find({}, {comments:{$slice: -5}}) // last 5 comments
db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10
db.posts.find({}, {comments:{$slice: [-20, 10]}}) // 20 from end, limit 10
여기에서 읽을 수 있는 정보: http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields
MongoDB 3.2의 new 연산자를 사용하여 지정된 배열 인덱스에서 요소를 반환할 수 있습니다.
데모:
바스켓이라는 이름의 컬렉션에는 다음과 같은 문서가 포함되어 있습니다.
{
"_id" : ObjectId("578f326f6db61a299a383c5a"),
"fruits" : [
"apple",
"mango",
"banana",
"apricot",
"cherry"
]
}
다음 쿼리는 인덱스에서 요소를 반환합니다.-2
(두 번째 요소) "sublish" 배열에 있습니다.
db.baskets.aggregate(
[
{ "$project": { "matched": { "$arrayElemAt": [ "$fruits", 1 ] } } }
]
)
그것이 생산하는.
{
"_id" : ObjectId("578f326f6db61a299a383c5a"),
"matched" : "mango"
}
그리고 다음은 배열의 마지막 요소 앞에 있는 요소를 쿼리합니다. 따라서 인덱스에 있는 요소입니다.-2
db.baskets.aggregate(
[
{ "$project": { "matched": { "$arrayElemAt": [ "$fruits", -2 ] } } }
]
)
다음과 같은 결과:
{
"_id" : ObjectId("578f326f6db61a299a383c5a"),
"matched" : "apricot"
}
이렇게 하는 또 다른 방법은 업데이트 배열 구문을 사용하는 것입니다.여기서,contribs.1
의 두 번째 요소를 설정합니다.contribs
값을 가질 배열ALGOL 58
(업데이트 구문의 설명서 페이지에서 가져온 것)
db.bios.update(
{ _id: 1 },
{ $set: { 'contribs.1': 'ALGOL 58' } }
)
언급URL : https://stackoverflow.com/questions/7223273/get-n-th-element-of-an-array-in-mongodb
반응형
'itsource' 카테고리의 다른 글
Eclipse에서 특정 인터페이스를 구현하는 클래스를 찾는 방법은 무엇입니까? (0) | 2023.05.17 |
---|---|
iPhone/iPad Simulator의 크기를 조정하는 방법은 무엇입니까? (0) | 2023.05.17 |
C#에 값 목록을 만드는 빠른 방법은 무엇입니까? (0) | 2023.05.17 |
명령줄에서 Xcode를 업데이트하는 방법 (0) | 2023.05.17 |
다른 Swift 파일에서 Swift 파일을 가져오려면 어떻게 해야 합니까? (0) | 2023.05.17 |