[MONGODB] 인덱스가 MongoDB를에 존재하는지 확인
MONGODB인덱스가 MongoDB를에 존재하는지 확인
내가 특정 인덱스 내 MongoDB의 존재 여부를 확인하는 데 사용할 수 있습니다를 통해 자바 스크립트 몽고 쉘을 사용할 수있는 명령이 있습니다. 나는 인덱스를 생성 할 스크립트 파일을 구축하고있다. 나는 시간이 파일에 여러 번호를 실행하면 다음 이미 존재하는 인덱스가 다시되지 않도록하고 싶습니다.
스크립트를 무시 다음 인덱스를 얻을 수있는 명령이있는 경우 이미 존재하는 것들을 무시하는 내 DB에있는 모든 인덱스의 컬렉션을 가져온 다음 논리를 구축하는 db.collection.getIndexes ()를 사용할 수 있지만 궁금 해서요 그 인덱스를 생성합니다. 뭔가 같은 :
If !exists(db.collection.exists("indexname"))
{
create db.collectionName.CreateIndex("IndexName")
}
해결법
-
==============================
1.MongoDB를에 인덱스를 생성하는 것은 나무 등의 작업입니다. db.names.createIndex를 실행 그래서 ({이름 : 1})가 존재하지 않은 경우에만 인덱스를 만들 것입니다.
MongoDB를에 인덱스를 생성하는 것은 나무 등의 작업입니다. db.names.createIndex를 실행 그래서 ({이름 : 1})가 존재하지 않은 경우에만 인덱스를 만들 것입니다.
createIndex에 대한 사용되지 않는 (MongoDB를 3.0 현재) 별칭 () ensureIndex이다 () createIndex ()가 실제로 무엇을하는지에 좀 더 명확하다.
편집하다: 이름 색인 : 이름은 같지만 기존 인덱스보다 다른 옵션 () createIndex를 호출하면 오류 MongoError를 던질 것이라고 의견에 명확히 대한 ZitRo 덕분에 ** INDEXNAME **이 질문에 설명 된대로 이미 다른 옵션이 존재한다.
당신이 검사에 대한 다른 이유가있는 경우에, 당신은 두 가지 방법 중 현재 인덱스 데이터를 액세스 할 수 있습니다 :
-
==============================
2.db.system.indexes를 사용하고 검색하십시오.
db.system.indexes를 사용하고 검색하십시오.
경우, 예를 들어, 당신은 당신이 이런 식으로 검색 할 수 있습니다, 인덱스가 'INDEXNAME'라는있다 :
db.system.indexes.find({'name':'indexname'});
특정 컬렉션 해당 인덱스를 검색해야하는 경우에, 당신은 (는 DB 이름을 가지고 도움이 될 것 등) NS 속성을 사용해야합니다.
db.system.indexes.find({'name':'indexname', 'ns':'dbname.collection'});
또는, 당신은 절대적으로 DB 이름을 포함 싫어하면 ...
db.system.indexes.find({'name':'indexname', 'ns': {$regex:'.collection$'}});
그 함께 이겠지 ...
그래서, 넌 완성 검사는 다음과 같습니다
if(db.system.indexes.find({name:'indexname',ns:{$regex:'.collection$'}}).count()==0) { db.collection.createIndex({blah:1},{name:'indexname'}) }
-
==============================
3.어쩌면 우리는 무언가에 동일 컬렉션에 인덱스를 가지고 있는지 확인하는 https://docs.mongodb.com/v3.2/reference/method/db.collection.getIndexes/#db.collection.getIndexes 같은 것을 사용할 수 있습니까?
어쩌면 우리는 무언가에 동일 컬렉션에 인덱스를 가지고 있는지 확인하는 https://docs.mongodb.com/v3.2/reference/method/db.collection.getIndexes/#db.collection.getIndexes 같은 것을 사용할 수 있습니까?
예는 삭제하고 새로운 하나를 추가하거나 직접 새로운 하나를 추가하는 경우
-
==============================
4.내 경우에는 내가는 다음과 않았다.
내 경우에는 내가는 다음과 않았다.
DBCollection yourcollectionName = mt.getCollection("your_collection"); if (yourcollectionName.getIndexInfo() == null || yourcollectionName.getIndexInfo().isEmpty()) { DBObject indexOptions = new BasicDBObject(); indexOptions.put("pro1", 1); indexOptions.put("pro2", 1); yourcollectionName.createIndex(indexOptions, "name_of_your_index", true); }
from https://stackoverflow.com/questions/35019313/checking-if-an-index-exists-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의 변수를 사용하는 방법지도 기능을지도-감소 (0) | 2019.12.24 |
---|---|
[MONGODB] MongoDB의 연결을 확인하는 방법 (0) | 2019.12.24 |
[MONGODB] 몽구스 findOne를 사용하는 방법 (0) | 2019.12.24 |
[MONGODB] MongoDB를 +는 nodejs : ISODate 필드를 쿼리하는 방법? (0) | 2019.12.24 |
[MONGODB] MongoDB를 사용하여 산화 마그네슘의 효율적인 페이징 (0) | 2019.12.23 |