Giả sử tôi có một bộ sưu tập người dùng và muốn triển khai tự động hoàn tất trên tên người dùng của những người dùng đó. Tôi nhìn vào các tài liệu mongodb và regex $ dường như là một cách để làm điều này. Có cách nào tốt hơn? Bởi tốt hơn tôi có nghĩa là thực hiện tốt hơn/thực hành tốt hơn.Triển khai tự động điền trên MongoDB
Trả lời
Theo đề xuất của @Thilo, bạn có thể sử dụng một số ý tưởng bao gồm tiền tố.
Điều quan trọng nhất là có yêu cầu rất nhanh (vì bạn muốn tự động hoàn thành cảm thấy tức thời). Vì vậy, bạn phải sử dụng truy vấn sẽ sử dụng các chỉ mục phù hợp.
Với regexp: sử dụng /^prefix/
(điều quan trọng là^để chỉ định bắt đầu dòng bắt buộc để tạo chỉ mục sử dụng truy vấn).
Truy vấn Phạm vi đó là tốt quá: { $gt : 'jhc', $lt: 'jhd' } }
phức tạp hơn nhưng nhanh hơn: bạn có thể lưu trữ tiền tố cây ở Mông Cổ (aka cố) với các mục như:
{usrPrefix : "anna", compl : ["annaconda", "annabelle", "annather"]}
{usrPrefix : "ann", compl : ["anne", "annaconda", "annabelle", "annather"]}
giải pháp cuối cùng này là rất nhanh (nếu tất cả các chỉ mục trên compl của khóa học) nhưng không phải là không gian hiệu quả ở tất cả. Bạn biết thương mại-off bạn có quá chọn.
Nếu bạn đang tìm kiếm các tiền tố, bạn có thể sử dụng một truy vấn phạm vi (không chắc chắn về cú pháp chính xác):
db.users.find({'username': { $gt : 'jhc', $lt: 'jhd' } })
Và bạn muốn một chỉ mục trên các lĩnh vực tên người dùng.
Chúng tôi làm điều đó bằng regex và nó nhanh như miễn là bạn có một chỉ số và bạn sử dụng/^ giá trị/
Hãy nhận biết bạn không thể sử dụng các trường hợp tùy chọn không nhạy cảm với một chỉ số, vì vậy bạn có thể muốn lưu trữ phiên bản chữ thường của chuỗi của bạn dưới dạng một trường khác trong tài liệu của bạn và sử dụng trường đó cho tự động điền.
Tôi đã thực hiện các thử nghiệm với hơn 3 triệu tài liệu và nó vẫn xuất hiện tức thời.
- 1. Triển khai tự động Mercurial
- 2. Triển khai web tự động
- 3. Triển khai API tự động điền địa điểm của Google trong iOS
- 4. kiểm tra tự động chạy trên triển khai với capistrano
- 5. Triển khai tự động TFS 2010
- 6. Tự động điền tự động điền jQuery không giữ lại
- 7. Tài nguyên triển khai tự động
- 8. Tự động hóa việc phát triển và triển khai Wordpress
- 9. Tự động điền trên tab trong ứng dụng Console
- 10. Cách triển khai phân trang trong Mongodb?
- 11. Tự động cập nhật hộp tự động điền trong Android?
- 12. Tự động điền tự động Emacs
- 13. Tự động khởi động webrole Azure sau khi triển khai
- 14. Số tiền tự động điền
- 15. Tắt tự động điền trên trường văn bản ở Django?
- 16. Tự động điền biến tĩnh trong PHP
- 17. Có thể tự động hóa triển khai ClickOnce không?
- 18. Làm cách nào để tự động triển khai Node.js?
- 19. Nhà cung cấp tự động trong triển khai web (msdeploy.exe)
- 20. Triển khai tự động bằng máy chủ CI
- 21. Tự động triển khai giải pháp SSIS/DLL hỗn hợp
- 22. Triển khai tự động tới Trình mô phỏng Azure?
- 23. Triển khai trên EC2
- 24. Thuộc tính được triển khai tự động C#
- 25. Tự động tạo triển khai phương pháp lớp cơ sở
- 26. UIImage - triển khai thuật toán cấp tự động
- 27. Asp.net: Triển khai chức năng Tự động đăng xuất
- 28. Cách tự động triển khai ứng dụng web
- 29. Thực hiện Tự động điền trong iOS
- 30. Cách triển khai ứng dụng C# .net với MongoDB
Câu trả lời hay. Mặc dù không hoàn thành với cố gắng. Cá nhân tôi chưa bao giờ có cảm giác 'tức thời' với việc sử dụng Regexes ở Mongo. Điều này nên làm các trick để làm cho nó nhanh hơn nhiều! – Vivek
Thật vậy, regexp trong mongo không thực sự được thực hiện tốt. Tuy nhiên, khi bạn muốn một cái gì đó chất lỏng bạn không nghĩ để truy vấn cơ sở dữ liệu trong sống, độ trễ chỉ đơn giản là quá cao. Một cách thích hợp để thực hiện tự động hoàn thành sẽ là tải một cách không đồng bộ một số lần hoàn thành thông thường và hoàn thành khi thời gian (và đầu vào của người dùng) tiếp tục. – kamaradclimber