2015-10-14 26 views
5

cách chúng tôi có thể tạo Indexes cho truy vấn sau bằng cách sử dụng MongoTemplate? Tôi đang đề cập đến trang web http://docs.mongodb.org/v2.4/tutorial/search-for-text/ họ đã không đưa ra bất kỳ chi tiết nào về cách chúng ta có thể tạo các chỉ mục bằng cách sử dụng MongoTemplate?tạo chỉ mục cho tìm kiếm bằng MongoTemplate?

db.getCollection('user').ensureIndex({ firstName: "text", middleName : 
"text", lastName : "text",emailId:"text" }); 

Trả lời

6

Giả sử thực thể của bạn User được mô phỏng như

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

và muốn có một chỉ mục văn bản dựa trên firstName của nó, Middlename, lastName và EmailId lĩnh vực, định nghĩa chỉ số MongoDB liệu sẽ giống như thế này :

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

để create a text index trên các lĩnh vực trên, bạn muốn có tìm kiếm văn bản đầy đủ kích hoạt trên, thực hiện như sau

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); 

Hoặc bạn có thể tạo chỉ mục tự động thông qua các chú thích bản đồ:

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

Cách dễ nhất để tạo chỉ mục trong Mongo sử dụng mùa xuân Java sẽ là:

// Define ur mongo template defination 

DBObject indexOptions = new BasicDBObject(); 
indexOptions.put("a", 1); 
indexOptions.put("b", 1); 
indexOptions.put("c.d", 1); 
indexOptions.put("e.f", 1); 
CompoundIndexDefinition indexDefinition = 
      new CompoundIndexDefinition(indexOptions); 
mongoTemplate.indexOps(<Classname>.class).ensureIndex(indexDefinition); 

Chỉ mục duy nhất có thể được định cấu hình trên định nghĩa chỉ mục: mongoTemplate.indexOps(<Classname>.class).ensureIndex(indexDefinition.unique());

0

Vào mùa xuân mongodb 2.0.1

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

    mongoTemplate.indexOps(DINMonitorLog.class).ensureIndex(textIndex); 
Các vấn đề liên quan