Đặt lại JavaScript đối tượng lồng nhau

Bất kỳ trường đối tượng nào cũng có thể lấy một mảng đối tượng. Mỗi đối tượng trong mảng được ánh xạ động dưới dạng một loại trường đối tượng và được lưu trữ ở dạng phẳng. Điều này có nghĩa là các đối tượng trong mảng được chia thành các trường riêng lẻ và các giá trị cho từng trường trên tất cả các đối tượng được lưu trữ cùng nhau. Đôi khi cần phải sử dụng kiểu lồng nhau để giữ toàn bộ đối tượng lồng nhau để bạn có thể thực hiện tìm kiếm trên đó

dạng phẳng

Theo mặc định, mỗi đối tượng lồng nhau được ánh xạ động dưới dạng loại trường đối tượng. Bất kỳ trường đối tượng nào cũng có thể lấy một mảng đối tượng

PUT testindex1/_doc/100
{ 
  "patients": [ 
    {"name" : "John Doe", "age" : 56, "smoker" : true},
    {"name" : "Mary Major", "age" : 85, "smoker" : false}
  ] 
}

Khi các đối tượng này được lưu trữ, chúng sẽ được làm phẳng, do đó, sự biểu diễn bên trong của chúng có một mảng gồm tất cả các giá trị cho mỗi trường

{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}

Một số truy vấn sẽ hoạt động chính xác trong đại diện này. Nếu bạn tìm kiếm bệnh nhân trên 75 tuổi HOẶC người hút thuốc, tài liệu 100 phải phù hợp

GET testindex1/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "patients.smoker": true
          }
        },
        {
          "range": {
            "patients.age": {
              "gte": 75
            }
          }
        }
      ]
    }
  }
}

Truy vấn trả về chính xác tài liệu 100

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.3616575,
    "hits" : [
      {
        "_index" : "testindex1",
        "_type" : "_doc",
        "_id" : "100",
        "_score" : 1.3616575,
        "_source" : {
          "patients" : [
            {
              "name" : "John Doe",
              "age" : "56",
              "smoker" : true
            },
            {
              "name" : "Mary Major",
              "age" : "85",
              "smoker" : false
            }
          ]
        }
      }
    ]
  }
}

Ngoài ra, nếu bạn tìm kiếm bệnh nhân trên 75 tuổi VÀ người hút thuốc, tài liệu 100 sẽ không khớp

GET testindex1/_search 
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "patients.smoker": true
          }
        },
        {
          "range": {
            "patients.age": {
              "gte": 75
            }
          }
        }
      ]
    }
  }
}

Tuy nhiên, truy vấn này vẫn trả về tài liệu 100 không chính xác. Điều này là do mối quan hệ giữa tuổi và hút thuốc đã bị mất khi các mảng giá trị cho các trường riêng lẻ được tạo

Loại trường lồng nhau

Các đối tượng lồng nhau được lưu trữ dưới dạng các tài liệu riêng biệt và đối tượng cha có tham chiếu đến các phần tử con của nó. Để đánh dấu các đối tượng là lồng nhau, hãy tạo ánh xạ với loại trường lồng nhau

PUT testindex1
{
    "mappings" : {
        "properties": {
            "patients": { 
                "type" : "nested"
            }
        }
    }
}

Sau đó, lập chỉ mục tài liệu với loại trường lồng nhau

PUT testindex1/_doc/100
{ 
  "patients": [ 
    {"name" : "John Doe", "age" : 56, "smoker" : true},
    {"name" : "Mary Major", "age" : 85, "smoker" : false}
  ] 
}

Bây giờ nếu bạn chạy cùng một truy vấn để tìm kiếm bệnh nhân trên 75 tuổi VÀ người hút thuốc, không có kết quả nào được trả về, điều này đúng

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 0,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  }
}

Thông số

Bảng sau liệt kê các tham số được các loại trường đối tượng chấp nhận. Tất cả các tham số là tùy chọn

Tham sốDescription

{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
5Chỉ định liệu các trường mới có thể được thêm động vào đối tượng này hay không. Các giá trị hợp lệ là
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
6,
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
0 và
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
1. Mặc định là
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
6.
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
3Một giá trị Boolean xác định liệu tất cả các trường trong đối tượng lồng con cũng nên được thêm vào tài liệu gốc ở dạng phẳng hay không. Mặc định là
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
0.
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
5Một giá trị Boolean xác định xem có nên thêm tất cả các trường trong đối tượng lồng nhau vào tài liệu gốc ở dạng phẳng hay không. Mặc định là
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
0.
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
7Các trường của đối tượng này, có thể thuộc bất kỳ loại được hỗ trợ nào. Các thuộc tính mới có thể được thêm động vào đối tượng này nếu
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
5 được đặt thành
{
    "patients.name" : ["John Doe", "Mary Major"],
    "patients.age" : [56, 85],
    "smoker" : [true, false]
}
6

Làm cách nào để đặt lại giá trị của đối tượng trong JavaScript?

Sử dụng a cho. trong vòng lặp để xóa một đối tượng và xóa tất cả các thuộc tính của nó . Vòng lặp sẽ lặp qua tất cả các thuộc tính có thể đếm được trong đối tượng. Trên mỗi lần lặp lại, hãy sử dụng toán tử xóa để xóa thuộc tính hiện tại.

Làm cách nào để đặt lại đối tượng trong Angular?

Gói tất cả các thành phần đầu vào của bạn bên trong thẻ biểu mẫu để Thẻ sẽ tự động tạo một phiên bản Nhóm biểu mẫu cấp cao nhất. Cập nhật thẻ biểu mẫu bằng biến tham chiếu mẫu, #form và đặt giá trị của nó như sau. biểu mẫu @ViewChild[NgForm]. NgForm; Cuối cùng, bạn có thể gọi phương thức đặt lại trên phiên bản biểu mẫu .

Chủ Đề