Criação de índices de vários campos no Mongoose / MongoDB


93

Estou tentando encontrar documentação, sem sucesso, sobre como criar índices de vários campos no Mongoosejs. Em particular, tenho dois campos que precisam ser indexados e exclusivos. Qual é um exemplo de esquema de mangusto que indexa dois campos juntos?

Respostas:


195

Você chama o indexmétodo em seu Schemaobjeto para fazer isso, conforme mostrado aqui . Para o seu caso, seria algo como:

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

2
Isso é chamado de Índice Compount em mongodb. Portanto, ele cria índices como campo1 e campo1 + campo2. Portanto, é o primeiro índice de acordo com o campo1 e, em seguida, dentro do campo1 em relação ao campo 2
Ketan Ghumatkar

1
qual é o significado de 1 após campo1: e campo2:?
Damon Yuan

9
@DamonYuan Eles definem a ordem de classificação dos campos no índice. 1é ascendente, -1seria descendente.
JohnnyHK

1
@KetanGhumatkar É baseado na ordem em que os campos são listados no objeto na chamada para index.
JohnnyHK

2
1e -1 especifica uma chave de índice crescente ou decrescente no campo de índice. Encontrei os documentos http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha


0

A propósito, a resposta aceita está errada, conforme https://stackoverflow.com/a/52553550/129300 você deve colocar os nomes dos campos entre aspas simples, ou seja:

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

Dia feliz!


As chaves de objeto em JS podem ser removidas das aspas, desde que sejam identificadores sintaticamente válidos. field1e field2são identificadores válidos. field1.foonão é, por exemplo.
Gus

-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"
   ..
   ..

  }
}

Eu testei com dados de amostra e está funcionando perfeitamente como o esperado.


Não queremos isso com o shell mongooses, queremos isso com o esquema node js
Rohit Nishad
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.