Mongoose / MongoDB에서 다중 필드 인덱스 생성


93

Mongoosejs에서 다중 필드 색인을 만드는 방법에 대한 문서를 찾으려고합니다. 특히 색인화되고 고유해야하는 두 개의 필드가 있습니다. 두 필드를 함께 인덱싱하는 몽구스 스키마의 예는 무엇입니까?

답변:


198

여기에 표시된대로 개체 에서 index메서드를 호출하여 Schema이를 수행합니다 . 귀하의 경우에는 다음과 같습니다.

mySchema.index({field1: 1, field2: 1}, {unique: true});

2
이것은 mongodb에서 Compount Index라고합니다. 따라서 field1 및 field1 + field2로 인덱스를 생성합니다. 는 필드 1에 대하여 다음 필드 1 필드 내부에있어서 제 2 인덱스되어,
케탄 Ghumatkar

1
field1 : 및 field2 : 뒤에 1의 의미는 무엇입니까?
데이먼 위안

9
@DamonYuan 색인에서 필드의 정렬 순서를 설정합니다. 1오름차순, -1내림차순입니다.
JohnnyHK 2015 년

1
@KetanGhumatkar에 대한 호출에서 필드가 개체에 나열되는 순서를 기반으로합니다 index.
JohnnyHK

2
1-1 오름차순으로 또는 인덱스 필드 내림차순 인덱스 키를 지정한다. 나는 문서 http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/를
Thai Ha


0

그건 그렇고, 허용되는 대답은 잘못되었습니다. https://stackoverflow.com/a/52553550/129300에 따라 필드 이름을 작은 따옴표로 묶어야합니다.

mySchema.index({'field1': 1, 'field2': 1}, {unique: true});

행복한 날!


JS의 객체 키는 구문 상 유효한 식별자 인 경우 인용을 해제 할 수 있습니다. field1field2유효한 식별자이다. field1.foo예를 들면 그렇지 않습니다.
거스

-3
    Following command can be used to create compound index for nested json:
    db.ACCOUNT_collection.createIndex({"account.id":1,"account.customerId":1},{unique:1}) 
Mongo json structure is like :
{"_id":"648738"
 "account": { 
    "id": "123",
    "customerId": 7879,
    "name": "test"
   ..
   ..

  }
}

예상대로 완벽하게 작동하는 샘플 데이터로 테스트했습니다.


mongooses 셸을 사용하는 것을 원하지 않습니다. 노드 js 스키마를 사용하는 것이
좋습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.