mongodb聚合项目objectId与concat

时间:2014-09-29 20:08:48

标签: mongodb aggregation-framework

db.test.aggregate({
    $match : { "themType" : "SuperTest" , "mType" : { "$in" : [ 1 , 2]}}
}, 
{ $project : { "_id" : 1, "refTestId" : 1, "avatar" : { $concat : [$refTestId] }
  } });

和avatar返回null,可能是因为它的objectId,是否可以在此查询中使用此objectId字符串?

2 个答案:

答案 0 :(得分:2)

从MongoDB 4.0及更高版本开始,有一个$toString运算符,它以十六进制字符串形式返回ObjectId值:

db.test.aggregate([
    { "$match": { 
        "themType": "SuperTest", 
        "mType": { "$in" : [1 , 2] }
    } },
    { "$addFields": { 
        "avatar": { "$toString": "$refTestId" }
    } }
])

或使用$convert

db.test.aggregate([
    { "$match": { 
        "themType": "SuperTest", 
        "mType": { "$in" : [1 , 2] }
    } },
    { "$addFields": { 
        "avatar": { 
            "$convert": { "input": "$refTestId", "to": "string" }
        }
    } }
])

答案 1 :(得分:0)

这还不可能。 WiP问题请参阅:https://jira.mongodb.org/browse/SERVER-29512