반응형
MongoDB에서 배열에 포함된 개체 필드를 어떻게 인덱싱합니까?
다중 키에 대한 mongodb 문서는 배열에 포함된 개체 필드를 쿼리하는 예를 제공합니다.
http://www.mongodb.org/display/DOCS/Multikeys
하지만 그 상황에 대한 인덱스를 만드는 방법에 대한 설명은 없습니다.배열에 인덱스를 만드는 것은 작동하지 않는 것 같습니다(설명 메커니즘을 사용하면 인덱스가 사용되지 않음을 알 수 있습니다).
추가 세부 정보:
> // find posts where julie commented
> db.posts.find( { "comments.author" : "julie" } )
{"title" : "How the west was won",
"comments" : [{"text" : "great!" , "author" : "sam"},
{"text" : "ok" , "author" : "julie"}],
"_id" : "497ce79f1ca9ca6d3efca325"}
네가 한다면.db.articles.ensureIndex( { comments : 1 } )
주석 개체의 하위 필드를 인덱싱하지 않고 주석 개체 자체만 인덱싱합니다.
따라서 다음은 인덱스를 사용합니다.
> db.posts.find( {comments : { "author" : "julie", "text" : "ok" } } )
댓글 개체에 대한 검색이기 때문입니다.
그러나 다음은 인덱스를 사용하지 않습니다.
> db.posts.find( { "comments.author" : "julie" } )
그럼 mongodb가 두 번째 사례를 색인화하려면 어떻게 해야 합니까?
다음 인덱스를 생성할 수 있습니다.
db.posts.ensureIndex({"comments.author" : 1})
이렇게 하면 내장된 문서의 작성자 필드만 색인화됩니다.인덱스는 다음에 사용됩니다.
db.posts.find( { "comments.author" : "julie" } )
게다가
db.posts.find( { comments: {$elemMatch: {author : "julie" }}} )
지금은 2021년입니다.최신 Mongodb 공식 문서에 따르면, 다음을 사용해야 합니다.createIndex
:
db.posts.createIndex({"comments.author" : 1})
"일반" 필드를 사용하는 것처럼 인덱스를 만듭니다.
db.[collection].ensureIndex( { [yourArrayField] : 1 } )
언급URL : https://stackoverflow.com/questions/9063564/in-mongodb-how-do-you-index-an-embedded-object-fields-in-an-array
반응형
'programing' 카테고리의 다른 글
Windows 7 시스템의 MongoDB:연결할 수 없습니다. (0) | 2023.07.09 |
---|---|
Oracle PL/SQL : 문자열에서 "공백 문자" 제거 (0) | 2023.07.09 |
UITableViewCell의 기본 높이는 얼마입니까? (0) | 2023.07.09 |
미발견(약속)유형 오류: vuex에서 null('시작' 읽기) vue 3의 속성을 읽을 수 없습니다. (0) | 2023.07.09 |
grid.arrange() 플롯을 파일에 저장하는 중 (0) | 2023.07.09 |