Tôi đang cố gắng chuyển đổi chuỗi thập lục phân sang đối tượng tương đương của nó trong truy vấn tổng hợp. Tôi đã thử hai phương pháp khác nhau:Chuỗi dự án tập hợp MongoDB đến ObjectId
db.omvas.aggregate([
{$project:{
EID:{$let: {
vars: {
id: "$EID"
},
in: ObjectId("$$id")
}},
}
},
{$group:{
_id:"$EID"
}
}
]);
và
db.omvas.aggregate([
{$project:{
EID: ObjectId("$EID")
}
},
{$group:{
_id:"$EID"
}
}
]);
tôi tiếp tục nhận được lỗi "Lỗi: không hợp lệ đối tượng id: chiều dài" sử dụng một trong hai phương pháp. Tôi đã thử nghiệm thêm một chuỗi chữ ở vị trí của biến tập hợp và tôi nhận được kết quả với một ObjectID thích hợp. Dường như giá trị chuỗi không được chuyển qua hàm ObjectId của Mongo mà đúng hơn là tên biến được truyền như một chuỗi ký tự.
Bất cứ ai cũng có bất kỳ ý tưởng nào nếu những gì tôi đang cố gắng hoàn thành là có thể? Có một số phép thuật tôi đang thiếu?
Cảm ơn, điều đó có ý nghĩa hoàn hảo. Truy vấn cụ thể này chỉ là một giai đoạn trong luồng công việc báo cáo. ObjectId là cần thiết vì nó đang được sử dụng bởi các truy vấn xa hơn đường ống. Tôi đang suy nghĩ lại cách họ làm việc ngay bây giờ và nghĩ rằng tôi có một cách tốt hơn để thực hiện chúng. – StevenWarren
Trong trường hợp của tôi, tôi muốn thực hiện '$ lookup' trong đó trường cục bộ là biểu diễn chuỗi của' ObjectId' và trường ngoài là một 'ObjectId' thực tế. Bất kỳ ý tưởng nếu điều này là có thể w/MongoDB 3.2? – Madbreaks
Một cách xung quanh nó sẽ là viết một kịch bản cho biết thêm một lĩnh vực mới có chứa các id như là một ObjectId cho các tài liệu trong bộ sưu tập. Sau đó, thực hiện tra cứu $ bằng cách sử dụng trường mới. –