2015-10-14 19 views

risposta

6

Supponiamo che il vostro soggetto User è modellata come

@Document 
class User { 
    String firstName; 
    String middleName; 
    String lastName; 
    String emailId; 
} 

e vogliono avere un indice di testo in base alla sua firstName, campi middleName, Cognome e EMAILID, la definizione dell'indice MongoDB grezzo sarebbe simile a questa :

{ 
    firstName: "text", 
    middleName: "text", 
    lastName: "text", 
    emailId: "text" 
} 

per create a text index sui campi sopra si desidera avere ricerca a testo integrale abilitata su, effettuare le seguenti operazioni

TextIndexDefinition textIndex = new TextIndexDefinitionBuilder() 
    .onField("firstName") 
    .onField("middleName") 
    .onField("lastName") 
    .onField("emailId") 
    .build(); 

MongoTemplate mongoTemplate = new MongoTemplate(new Mongo(), "database"); // obtain MongoTemplate 
mongoTemplate.indexOps(User.class).ensureIndex(textIndex); 

oppure è possibile creare l'indice automaticamente attraverso le annotazioni di mappatura:

@Document 
class User { 
    @TextIndexed String firstName; 
    @TextIndexed String middleName; 
    @TextIndexed String lastName; 
    @TextIndexed String emailId; 
} 
4

Il modo più semplice per creare indici in mongo utilizzando primavera Java sarà:

Un indice univoco può essere configurato sulla definizione dell'indice: mongoTemplate.indexOps(<Classname>.class).ensureIndex(indexDefinition.unique());

0

In primavera mongodb 2.0.1

TextIndexDefinition textIndex = new TextIndexDefinition.TextIndexDefinitionBuilder().onField(indexName).build(); 

    mongoTemplate.indexOps(DINMonitorLog.class).ensureIndex(textIndex); 
Problemi correlati