MongoDB: Tìm tài liệu bằng cách không tồn tại của một trường?


173

Có cách nào để chỉ định một điều kiện "nơi tài liệu không chứa trường" không?

Ví dụ: tôi muốn chỉ tìm cái đầu tiên trong số 2 cái này vì nó không có trường "giá".

{"fruit":"apple", "color":"red"}


{"fruit":"banana", "color":"yellow", "price":"2.00"}


3
Bạn cũng có thể thửdb.mycollection.find({ "price" : null })
evilReiko

Câu trả lời:


329

Hãy thử $existstoán tử:

db.mycollection.find({ "price" : { "$exists" : false } })

và xem tài liệu của nó .


12
+1. Tuy nhiên, hãy nhớ rằng các truy vấn như vậy không thể sử dụng lập chỉ mục và có thể rất chậm trên các bộ sưu tập lớn.
mnemosyn

10
Điểm tuyệt vời - cảm ơn. Tôi biết cảnh báo này đúng trong phiên bản MongoDB 1.8.x trở về trước; nhưng tôi nghĩ các truy vấn có ràng buộc trường tồn tại $ có thể sử dụng các chỉ mục trong phiên bản 2.0 ...?
ẩm hơn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.