Tôi đang sử dụng spring-data-mongodb-1.2.0.RELEASE. Tôi có hai lớp A và B trong đó B có tham chiếu đến A và được chú thích bằng @DBRef.Dữ liệu mùa xuân - Chỉ mục MongoDB DBRef
Class A:
@Document(collection = "a")
public class A {
@Id
public String id;
/** The TicketGrantingTicket this is associated with. */
@Field
public String name;
public A(String id, String name) {
this.id = id;
this.name = name;
}
}
Class B:
@Document(collection = "b")
public class B {
@Id
public String id;
@Field
public String name;
@DBRef
@Indexed
public A a;
public B(String id, String name, A a) {
super();
this.id = id;
this.name = name;
this.a = a;
}
}
Vì tôi quering cho tất cả các trường hợp của B được đề cập đến một Một chắc chắn:
B fromDB = mongoOperations.findOne(Query.query(Criteria.where("a.$id").is(a1.id)), B.class);
tôi cần nó để được lập chỉ mục.
Sau lần chèn B đầu tiên vào MongoDB, chỉ mục sẽ được tạo. Như có thể thấy bên dưới, không:
Có ai biết làm cách nào để tạo chỉ mục như vậy không?
Ngoài ra có vẻ như tệp DBRef (có thể được xem bởi vỏ mongo) không khớp với định dạng như được định nghĩa tại MongoDB documentation.
Tôi có thiếu gì đó ở đây không?
Cảm ơn sự giúp đỡ. Tuy nhiên, tại sao chỉ mục không được tạo ra, nó được chú thích bằng @Indexed? và một câu hỏi mở khác là tại sao tài liệu MongoDB hiển thị DBRef ở định dạng khác với định dạng có thể nhìn thấy ở ảnh chụp màn hình Mongo – Modi
Đối với @Indexed, nó không thực sự được ghi lại, nhưng tôi không nghĩ nó phù hợp cho phức tạp các loại, dù sao cũng không bao giờ làm việc cho tôi. Cá nhân, tôi sử dụng một trong hai phương pháp được đề cập ở trên để lập chỉ mục "phức tạp" loại. Đối với vấn đề thứ hai, bạn đang sử dụng phiên bản vỏ mongodb nào? thử 'db.d.find ({}, {" a. $ ref ": 1," a. $ id ": 1})' bạn nhận được gì? –
Tôi đang sử dụng Mongo DB và phiên bản shell 2.4.1. Tôi có thể thực hiện các truy vấn tiếp theo: db.b.find ({"a. $ Id":}, {"a. $ Id": 1}) và db.b.find ({"a. $ id ": }, {" a. $ ref ": 1}) nhưng Tôi không thể bao gồm. $ ref và a. $ id trên đối số dự đoán và đối số điều kiện phải bao gồm" a. $ id ". Quan trọng nhất là để sử dụng chỉ mục đã được tạo trên 'a', phần tử truy vấn phải bao gồm a. $ Id và a. $ Ref: db.b.tìm ({a: {"$ ref": a, "$ id": }}) –
Modi