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

Tìm kiếm giá trị trong object có khóa số với MongoDB

Khi object có khóa là số (dạng chuỗi), dùng $where với hàm JavaScript để duyệt qua các key.

Tạo document với object details có khóa "101", "1001":

> db.demo268.insertOne({
   "details" : {
      "101" : "John",
      "1001" : "Bob"
   }
});

Truy vấn tìm document có giá trị "Bob" trong object details:

> db.demo268.find({ $where:
   function() {
      for (var k in this.details) {
         if (this.details[k] == "Bob") {
            return true;
         }
      }
   }
})

Kết quả trả về document chứa "Bob":

{
   "_id" : ObjectId("5e4816141627c0c63e7dbaaf"),
   "details" : { "101" : "John", "1001" : "Bob" }
}

Lưu ý: $where chạy JavaScript nên chậm hơn các toán tử query chuẩn. Nên thiết kế schema tránh khóa số động nếu cần truy vấn thường xuyên.