Mở bài MongoDB finding nested elements này, tác giả khẳng định rằng cấu trúc tài liệu MongoDB là
car : { "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}
Khi tôi đã cố gắng để tạo lại vấn đề, tôi gặp một số hành vi kỳ lạ với chèn MongoDB
Khi chạy chèn trên dữ liệu mẫu ở trên, tôi đã nhận được lỗi sau
> db.sample.insert({car:{ "$ref" : "cars" , "$id" : { "$oid" : "4e8478ace4b0dea06288ad63"}}})
Tue Jan 24 14:09:07 uncaught exception: field names cannot start with $ [$oid]
nó nói rằng tên trường không thể bắt đầu bằng $
.
Nếu thats trường hợp, nó không nên làm việc nếu tôi loại bỏ $
từ oid và rời khỏi còn lại $ref
& $id
hoang sơ
> db.sample.insert({car:{ "$ref" : "cars" , "$id" : { "oid" : "4e8478ace4b0dea06288ad63"}}})
> db.sample.find()
{ "_id" : ObjectId("4f1e6fbc403aae757ec6dea5"), "car" : { "$ref" : "cars", "$id" : { "oid" : "4e8478ace4b0dea06288ad63" } } }
đáng ngạc nhiên nó làm việc. Bây giờ nó chấp nhận các lĩnh vực bắt đầu với $
Ngoài ra khi tôi đã cố gắng truy vấn này
> db.sample.insert({ "$ref" : "cars" })
document to insert can't have $ fields
tôi đã nhận lỗi trở lại.
Tôi không hiểu điều gì gây ra điều này? ai có một ý tưởng rõ ràng?
Vâng, đó là lý do ..cảm ơn bạn – RameshVel
là có một cách để cơ hội DBRefs? – Backlit
@Backlit: Tôi rất tiếc, tôi không hiểu câu hỏi. Bạn muốn thay đổi cú pháp của dbrefs? Đảm bảo bạn hiểu rằng bạn không phải sử dụng dbrefs - thực tế, thường không bắt buộc và tài liệu chính thức khuyên bạn nên sử dụng một liên kết trực tiếp đơn giản, như 'UserId: 423434'. – mnemosyn