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.