我试图将十六进制字符串转换为聚合查询中的等效ObjectID.我尝试了两种不同的方法:
db.omvas.aggregate([
{$project:{
EID:{$let: {
vars: {
id: "$EID"
},
in: ObjectId("$$id")
}},
}
},
{$group:{
_id:"$EID"
}
}
]);
Run Code Online (Sandbox Code Playgroud)
和
db.omvas.aggregate([
{$project:{
EID: ObjectId("$EID")
}
},
{$group:{
_id:"$EID"
}
}
]);
Run Code Online (Sandbox Code Playgroud)
我继续使用任一方法获得错误"错误:无效对象id:长度".我测试了添加一个文字字符串来代替聚合变量,我得到一个带有正确ObjectID的结果.似乎字符串值没有传递给Mongo的ObjectId函数,而是将变量名称作为文字字符串传递.
任何人都知道我想要完成的任务是否可行?我有什么魔法吗?