MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để truy vấn MongoDB để kiểm tra xem một mục có tồn tại hay không?

Vì bạn không cần số lượng, bạn nên đảm bảo rằng truy vấn sẽ trở lại sau khi tìm thấy kết quả phù hợp đầu tiên. Vì hiệu suất đếm không phải là lý tưởng, điều đó khá quan trọng. Truy vấn sau sẽ thực hiện được điều đó:

db.Collection.find({ /* criteria */}).limit(1).size();

Lưu ý rằng find().count() theo mặc định thì không tôn trọng limit và do đó có thể trả về kết quả không mong muốn (và sẽ cố gắng tìm tất cả các kết quả phù hợp). size() hoặc count(true) sẽ tôn trọng cờ giới hạn.

Nếu bạn muốn đi đến cực trị, bạn nên đảm bảo rằng truy vấn của bạn sử dụng các chỉ mục được bao phủ. Các chỉ mục được bao phủ chỉ truy cập vào chỉ mục, nhưng chúng yêu cầu trường bạn truy vấn phải được lập chỉ mục. Nói chung, điều đó nên làm vì một count() rõ ràng là không trả về bất kỳ trường nào. Tuy nhiên, các chỉ mục được đề cập đôi khi cần con trỏ khá dài dòng:

db.values.find({"value" : 3553}, {"_id": 0, "value" : 1}).limit(1).explain();

{
  // ...
  "cursor" : "BtreeCursor value_1",
  "indexOnly" : true,  // covered!
}

Rất tiếc, count() không cung cấp explain() , vì vậy nó có xứng đáng hay không là điều khó nói. Như thường lệ, đo lường là người bạn đồng hành tốt hơn lý thuyết, nhưng lý thuyết ít nhất có thể giúp bạn thoát khỏi những vấn đề lớn hơn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 'process.nextTick (function () {throw err;})' - Undefined không phải là một hàm (mongodb / mongoose)

  2. Làm cách nào để xóa các bản sao dựa trên một khóa trong Mongodb?

  3. Làm cách nào để chuyển đổi một thuộc tính trong MongoDB từ văn bản sang loại ngày tháng?

  4. Nhận bản ghi MongoDB mới nhất theo trường ngày giờ

  5. Node js mongoose giới hạn cư trú