Tôi gặp sự cố với truy vấn MongoDB này bằng cú pháp mảng PHP. Đây là phiên bản trực tiếp của truy vấn tôi muốn sử dụng.
db.collection.find({
$or: [
{$and : [{X:1}, {X: {$gt: 100}}]},
{$and : [{X:2}, {X: {$lt: 100}}]}
]
});
Lưu ý: Truy vấn thực tế phức tạp hơn, đây chỉ là một ví dụ.
Tôi không thể tìm thấy một số ví dụ mô tả loại truy vấn này bằng PHP. Điều tốt nhất tôi đã đưa ra là:
$query = array(
'$or' => array(
array(
'$and' => array(
array('X' => 1),
array('X' => array('gt' => 100))
)
),
array(
'$and' => array(
array('X' => 2),
array('X' => array('lt' => 100))
)
),
)
);
$this->db->collection->find($query);
Nhưng truy vấn này không trả lại bất kỳ kết quả nào. Rõ ràng chúng tôi không thể xóa $and
khỏi mảng vì chúng tôi không thể có các khóa trùng lặp trong mảng PHP.
Tôi không muốn sử dụng các biểu thức JavaScript vì tốc độ rất quan trọng.
CẬP NHẬT: Như Alexander Azarov đã chỉ ra trong nhận xét, truy vấn ban đầu của tôi có thể được viết khác nhau. Tôi đã cập nhật câu hỏi bằng truy vấn $and
được sử dụng đúng cách.
Chính xác thì không hiệu quả? Bạn có thông báo lỗi không? –
Truy vấn thực hiện tốt nhưng trả về 0 kết quả. –
Bạn có thể đăng kết xuất dữ liệu mẫu không? –