使用Mongodb 3.4.15的$ project的ObjectId函数无效的对象ID长度错误

时间:2019-02-28 18:08:42

标签: mongodb mongodb-query aggregation-framework

这是我的汇总

startsWith

结果是

xor

我想将祖先字符串转换为db.getCollection("entities").aggregate([ {$match : {...omissis..}, {$project : {ancestors : 1}}, {$unwind: "$ancestors"}]); 。 我做了很多测试,我的最后一个是添加这个管道

{ 
    "_id" : ObjectId("5b855ffb17285c29501dd801"), 
    "ancestors" : "5c62ef9b8521e37b80517583"
},
{ 
    "_id" : ObjectId("5b8537d3571c4f3e3c0dcf54"), 
    "ancestors" : "5c75565b3e44853a18cc9d11"
}

我所做的每项测试都存在相同的错误

  

错误:无效的对象ID:长度:

祖先字符串是有效的ObjectId,我不知道如何解决此错误。

我知道Mongodb 4.0中有一些新命令,但该项目仍使用3.4.15。

1 个答案:

答案 0 :(得分:1)

我使用cursorjavascript实现了这一目标。请尝试

db.getCollection("entities").aggregate([
    {$match : {...omissis..},
    {$project : {ancestors : 1}},  
    {$unwind: "$ancestors"}]).forEach(function(doc){
    doc.ancestors = ObjectId(doc.ancestors)
    print(doc);
    })