2012-04-23 33 views

Trả lời

1

Có một số cách:

1- Giả sử bạn đang cố gắng cung cấp id duy nhất cho mỗi bài đăng trên blog. Tại sao không ghi đè trường '_id' của tài liệu trong bộ sưu tập blog? tài liệu mẫu sẽ là:

{ "_id" : 122 , "content" : { "title: ..... } 

Bạn sẽ phải tìm cho ra một phương pháp để tạo ra một id autoincrement tuy nhiên, đó là khá dễ dàng. Tuy nhiên, loại khóa chính này không được khuyến nghị. http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field

2- Hãy lĩnh vực _id vẫn như nó có, và additionaly lưu trữ một chìa khóa 'blogid' đó là một số nguyên, bạn sẽ phải chạy ensureIndex vào 'lĩnh vực blogid` mặc dù để làm cho truy cập bởi blogid nhanh. Lưu trữ trên không sẽ nhỏ, vì bạn sẽ lưu trữ một keyname và một số nguyên trong tài liệu của bạn.

tài liệu mẫu sẽ là:

{ "_id" : xxxxxxxxxx ,"blogid" : 122, "content" : { "title: ..... } 
+0

Liệu các phương pháp váy blogid quanh scalabilit y vấn đề hoặc tôi vẫn sẽ gặp phải các vấn đề tương tự như trong phương pháp 1? – deltanovember

+0

@deltanovember phương pháp blogid hoạt động tốt. Chi phí duy nhất là bộ nhớ bổ sung cho dữ liệu và chỉ mục trên khóa blogid. Cũng sẽ đề nghị đặt tên trường này càng nhỏ càng tốt, vì nó chiếm không gian cho mỗi tài liệu, 'đấu giá' sẽ làm tốt. – DhruvPathak

1

Có một loạt các dự án khác nhau trên GitHub như https://github.com/dodo/node-slughttps://github.com/stipsan/String.Slugify.js nhưng chúng tập trung vào việc tạo URL hợp lệ ngoài chuỗi (thường là chủ đề bài viết hoặc tiêu đề bài viết). Tôi đã không nhìn thấy bất kỳ mà có một số ngẫu nhiên và một số làm thế nào sản xuất một số ngẫu nhiên ngắn hơn (?) Và duy nhất.

Cá nhân tôi chỉ có trường mã thông báo trên đối tượng bài đăng có chứa giá trị duy nhất ngắn hơn chỉ bằng cách sử dụng id DB trực tiếp (và an toàn hơn một chút). Nếu bạn đang sử dụng Mongoose, mã thông báo có thể được tạo tự động bằng cách gắn trước sự kiện 'Lưu' trước trên mẫu Mongoose của bạn.

2

Các id trong MongoDB thực sự là một giá trị thập lục phân để chuyển đổi đó vào một số giá trị bạn có thể sử dụng đoạn mã sau để tìm kiếm các giá trị số trong cơ sở dữ liệu như 1, 2 , 3 .. và mã này sẽ chuyển đổi giá trị đó vào hex thích hợp

article_collection.db.json_serializer.ObjectID.createFromHexString(id) 

nơi article_collection là của bạn đối tượng bộ sưu tập

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