2011-10-14 26 views
5

Tôi đọc tài liệu đó: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24modMongoDB nhanh Queries Javascript

$mod 

Các mod điều hành $ cho phép bạn làm các truy vấn modulo nhanh để thay thế một trường hợp phổ biến đối với nơi mệnh đề. Ví dụ, $ sau đây truy vấn:

db.things.find("this.a % 10 == 1") 

có thể được thay thế bằng:

db.things.find({ a : { $mod : [ 10 , 1 ] } }) 

Vì vậy, tôi không hiểu những gì fast nghĩa ở đây. Hiệu suất?

Trả lời

3

Tôi chưa đo điểm chuẩn này, nhưng điều đó có thể thực sự có nghĩa là hiệu suất. Rõ ràng là "$ where" thực hiện javascript cho mỗi đối tượng, nhưng "$ mod" là một nhà điều hành gốc mongodb, sẽ nhanh hơn nhiều, bởi vì không cần phải thực thi bất kỳ javascript nào cho từng đối tượng. cũng có một cái nhìn tại các câu sau đây từ các tài liệu:

Javascript executes more slowly than the native operators listed on this page, 
but is very flexible. 

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

+0

Bạn có bất cứ ý tưởng về câu trả lời index @ Andrew Orsich không? – kamaci

+0

Đối với các truy vấn javascript, không thể sử dụng các chỉ mục, vì javascript phải được đánh giá cho từng đối tượng, được chọn với truy vấn của bạn. Vì vậy: nếu bạn có lựa chọn giữa toán tử tích hợp như * $ mod * và javascript, javascript phải luôn chậm hơn, vì javascript được đánh giá cho từng đối tượng * và * không thể sử dụng chỉ mục, trong khi nội dung dựng sẵn toán tử chỉ được đánh giá khi truy vấn của bạn được phân tích cú pháp bởi mongodb * và * nó có thể sử dụng một chỉ mục. Nó có lẽ sẽ là thú vị, để chuẩn mực này ... – aurora

+0

Cảm ơn câu trả lời của bạn. Chỉ một lần nữa thôi. Những gì bạn có nghĩa là với lập chỉ mục tôi có thể đọc nó từ bất cứ nơi nào? Tôi nghĩ tôi không biết gì. – kamaci

1

Mọi thắc mắc javascript/regex trong MongoDB không thể sử dụng chỉ số và làm việc chậm. Vì vậy, câu trả lời cho câu hỏi của bạn là có, tài liệu nói về hiệu suất. Thông tin

Thông tin thêm về phía máy chủ javascript bạn có thể tìm here

Các vấn đề liên quan