Tôi có một công cụ đơn giản để xây dựng bộ sưu tập tài liệu và sau đó tự động định dạng chúng để hiển thị EPUB hoặc LaTeX, được viết trên đầu trang của ExpressJS. Tôi đang sử dụng Coffeescript, nếu có vấn đề (tôi nghi ngờ nó).Mongoose: ObjectId So sánh không phù hợp
Sử dụng Mongoose, tôi đã điều sau đây:
DocumentSchema = new Schema
title: String
Offrefs = new Schema
ref: { type: ObjectId }
isa: String
BinderSchema = new Schema
title: String
contains: [Offrefs]
Offrefs không xác định những gì nó đề cập đến vì bởi vì tôi muốn để có thể chứa một số chất kết dính trong chất kết dính khác, để tạo ra bộ sưu tập hợp lý: "Những dành cho máy in, "" Đây là thông tin dành cho máy in "" Đây là những trang web chỉ ", v.v. (Tôi đã loại bỏ tất cả các nội dung khác nhau.)
Thật không may, tôi đã truy vấn vào nơi để truy lục các đối tượng
(story._id == offref.ref) -> True
Và cả hai thực sự trông giống nhau. Nhưng:
(binder._id == offref.ref) -> False
(String(binder._id) == String(offref.ref)) -> True
Và một so sánh hình ảnh của hai tham chiếu trong hai cuối cùng, họ là số ID giống nhau, nhưng các ObjectId
đối tượng không so sánh một cách chính xác.
Tôi không muốn phải thực hiện chuyển đổi chuỗi liên tục, đây là khả năng mạnh khi tôi chuyển đổi các đối tượng phức tạp này thành cây dữ liệu. Mối quan hệ cây là một con gấu trong bất kỳ DB nào; họ không nên khó khăn trong MongoDB.
Làm thế nào để bạn so sánh ObjectId trong MongoDB?
Yay, các tính năng không có giấy tờ. – peterjwest
Vì vậy, điều này không giống như mongoose.Schema.Types.ObjectID? Tài liệu của họ ngụ ý rằng nó chỉ có phương pháp 'tự động': http://mongoosejs.com/docs/api.html#schema-objectid-js – peterjwest
@peterjwest Phải, 'mongoose.Schema.Types.ObjectId' thực sự là chỉ để sử dụng làm siêu dữ liệu kiểu trường trong định nghĩa lược đồ. – JohnnyHK