MongoDB를 사용하여 많은 정보를 저장하고 인덱스 배열에서 값을 검색해야합니다.MongoDB 배열 인덱스 검색
다음은 스키마의 : 문서에 다른 값이 있습니다
{ "common_name" : { "name" : "thename", "type" : "thetype" } }
, 그러나 이것은 내가 찾고 있어요 유일한 하나입니다.
그래서, 나는이 일 것 같은 것을 생각 : (쉘에서)
db.collection.find({common_name:{$in:"thename"}})
을하지만 다시 아무 것도 얻을 수 없습니다.
이것은 정확히 여기 보이는 것처럼 보입니다. http://www.php.net/manual/en/mongo.queries.php -하지만 나는 아무것도 얻을 수없는 것 같습니다.
, 그것은 기본적으로 각 하위 범주에 대한 $ 또는 인덱스를 정의, 추한 얻을 수, 나는
db.collection.find({"common_name.name":"thename"}})
시도하고 예상대로 작동하지만 (최대 4) 인덱스에 여러 노드를 검색 내 쿼리 시간을 4 배로 늘릴 수 있습니다. 이것이 자동 완성기에 힘을 불어 넣는 것이지, 나는 그것을 할 수 없다.
이상하게도 다음이 문서를 반환하지 않습니다 중 하나 : 나의 이해에 정확히 위의 쿼리와 같은 일이
db.collection.find({"common_name":{"name":"thename"}})
.
나는 꽤 몽고를 처음 보았습니다. 그래서 여기에 큰 무언가가 없어 졌을까요?
고정 된 정규식을 사용하여이 데이터에 가장 빨리 액세스하는 방법에 대한 아이디어가 있으십니까?
나는 관계형 테이블을 사용할 수는 있지만 Mongo와 같은 NoSQL 시스템의 목적을 상회하지는 않습니까?
아, 그게 문제가 될지 걱정되었습니다. 그런 식으로 스키마를 바꿀 것입니다. 나는 http://www.php.net/manual/en/mongo.queries.php에서 php docs를 오해했거나 틀렸다. 감사! – Jesse
와우, 배열로 변환 한 후 몇 가지 explain()을 실행했습니다. 고정 된 정규식을 사용하여 배열을 검색하는 데 55ms가 걸렸습니다. 색인을 생성 한 후에는 2로 줄었습니다. 꽤 놀랍습니다. – Jesse
@Jesse - 색인을 한 번 잊어 버렸습니다. 내 컬렉션에 거의 백만 건의 문서가있을 때까지 알리지 못했습니다! 색인이 추가되었으며 몇 밀리 초로 돌아갔습니다. –