小编Ste*_*ren的帖子

MongoDB聚合项目字符串到ObjectId

我试图将十六进制字符串转换为聚合查询中的等效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函数,而是将变量名称作为文字字符串传递.

任何人都知道我想要完成的任务是否可行?我有什么魔法吗?

mongodb aggregation-framework

12
推荐指数
2
解决办法
7877
查看次数

标签 统计

aggregation-framework ×1

mongodb ×1