Tạo chỉ mục đa trường trong Mongoose / MongoDB


93

Tôi đang cố gắng tìm tài liệu, nhưng vô ích, về cách tạo chỉ mục đa trường trong Mongoosejs. Đặc biệt, tôi có hai trường cần được lập chỉ mục và duy nhất. Lược đồ mongoose ví dụ lập chỉ mục hai trường với nhau là gì?

Câu trả lời:


196

Bạn gọi indexphương thức trên Schemađối tượng của mình để thực hiện điều đó như được hiển thị ở đây . Đối với trường hợp của bạn, nó sẽ giống như:

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

2
Đây được gọi là Chỉ số tài khoản trong mongodb. Vì vậy, nó tạo ra các chỉ mục dưới dạng field1 và field1 + field2. Vì vậy, nó là chỉ số đầu tiên theo field1 và sau đó bên field1 liên quan đến lĩnh vực 2
Ketan Ghumatkar

1
ý nghĩa của 1 sau field1: và field2:?
Damon Yuan

9
@DamonYuan Họ đặt thứ tự sắp xếp của các trường trong chỉ mục. 1đang tăng dần, -1sẽ giảm dần.
JohnnyHK

1
@KetanGhumatkar Nó dựa trên thứ tự các trường được liệt kê trong đối tượng trong lệnh gọi index.
JohnnyHK

2
1-1 chỉ định một khóa chỉ mục tăng dần hoặc giảm dần trên trường chỉ mục. Tôi đã tìm thấy tài liệu http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thái Hà

11

Việc xác định các chỉ mục ở cấp giản đồ là cần thiết khi tạo các chỉ mục ghép.

animalSchema.index({ name: 1, type: -1 });

Tham khảo: http://mongoosejs.com/docs/guide.html#indexes


5
Ý nghĩa của 1 và -1 là gì? Tôi không thể tìm thấy điều này trong tài liệu mà bạn đã tham khảo. Cảm ơn.
DFB

2
Tôi đã tìm thấy câu trả lời trên trang này: docs.mongodb.org/manual/core/indexes-introduction Cảm ơn!
DFB

0

Nhân tiện, câu trả lời được chấp nhận là sai, theo https://stackoverflow.com/a/52553550/129300, bạn nên đặt tên trường trong dấu ngoặc kép, tức là:

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

Ngày hạnh phúc!


Các khóa đối tượng trong JS có thể được hủy trích dẫn miễn là chúng là mã nhận dạng hợp lệ về mặt cú pháp. field1field2là số nhận dạng hợp lệ. field1.foochẳng hạn.
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"
   ..
   ..

  }
}

Tôi đã thử nghiệm với dữ liệu mẫu, nó hoạt động hoàn hảo như mong đợi.


Chúng tôi không muốn điều đó với vỏ mongooses, chúng tôi muốn điều đó với lược đồ js nút
Rohit Nishad
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.