Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tận dụng index khi truy vấn subdocument không biết tên trường trước trong MongoDB

Khi schema subdocument động (không biết tên trường), dùng pattern key-value (properties.k, properties.v) và index trên hai trường này.

Tạo collection demo274 với mảng details chứa object schema động:

> db.demo274.insertOne({
   "details": [
      {"StudentFirstName":"Chris","StudentLastName":"Brown"},
      {"StudentFirstName":"David","StudentLastName":"Miller"},
      {"StudentFirstName":"John","StudentLastName":"Smith"},
      {"StudentFirstName":"John","StudentLastName":"Doe"}
   ]
});

Tạo compound index trên details.StudentFirstName và details.StudentLastName:

> db.demo274.ensureIndex({"details.StudentFirstName":1,"details.StudentLastName":1});

Kết quả tạo index thành công:

{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

Mẹo: Với schema hoàn toàn động, hãy lưu dưới dạng mảng cặp key-value: {k:"fieldName", v:"value"} và index trên details.k, details.v.