【发布时间】:2015-02-18 15:56:08
【问题描述】:
我正在尝试在聚合查询中将十六进制字符串转换为其等效的 ObjectID。我尝试了两种不同的方法:
db.omvas.aggregate([
{$project:{
EID:{$let: {
vars: {
id: "$EID"
},
in: ObjectId("$$id")
}},
}
},
{$group:{
_id:"$EID"
}
}
]);
和
db.omvas.aggregate([
{$project:{
EID: ObjectId("$EID")
}
},
{$group:{
_id:"$EID"
}
}
]);
无论使用哪种方法,我都会不断收到错误“错误:无效的对象 id:长度”。我测试了添加一个文字字符串来代替聚合变量,我得到了一个带有正确 ObjectID 的结果。似乎字符串值没有传递给 Mongo 的 ObjectId 函数,而是变量名作为文字字符串传递。
任何人都知道我想要完成的事情是否可行?有什么我缺少的魔法吗?
【问题讨论】:
标签: mongodb aggregation-framework