Cuối cùng tôi đã tìm ra nó. Vấn đề không phải với mã hóa. Đó là với cấu trúc của các tài liệu.
Bởi vì tôi đã sử dụng ví dụ MongoPipeline tiêu chuẩn không xử lý các mặt hàng phế liệu lồng nhau.
Những gì tôi đang làm là:BlogItem:"url" ... comments =[CommentItem]
Vì vậy, BlogItem của tôi có một danh sách các CommentItems. Bây giờ vấn đề đã đến ở đây, vì vẫn duy trì đối tượng trong cơ sở dữ liệu mà tôi thực hiện:
self.db[self.collection_name].insert(dict(item))
Vì vậy, ở đây tôi đang phân tích BlogItem thành một câu lệnh. Nhưng tôi không phân tích cú pháp danh sách CommentItems. Và bởi vì theo dõi lại hiển thị loại CommentItem giống như một dict, tôi đã không xảy ra với tôi rằng đối tượng có vấn đề không phải là dict!
Vì vậy, cuối cùng cách để khắc phục sự cố này là thay đổi dòng khi thêm nhận xét vào danh sách nhận xét như sau:
item['comments'].append(dict(comment))
Bây giờ MongoDB coi nó như một tài liệu hợp lệ.
Cuối cùng, đối với phần cuối cùng, nơi tôi hỏi tại sao tôi nhận được một ngoại lệ trên bảng điều khiển python chứ không phải trong tập lệnh.
Lý do là vì tôi đang làm việc trên bảng điều khiển python, chỉ hỗ trợ ascii. Và do đó lỗi.