繁体   English   中英

聚合期间MongoDB替换值

[英]MongoDB replace value during aggregation

假设此文档:

{
    _id : Object(“12918”),
    username : “username”,
    password : “password”,
    occupation: {
        name : “Football”,
        code : 254,
    }
},
{
    _id : Object(“12919”),
    username : “username2”,
    password : “password2”,
    occupation: {
        name : “Basketball”,
        code : 255,
    }
}

我想要一个返回的查询:

{
    _id : Object(“12918”),
    occupation : {
        name : “*”,
        code : 254
    }
},
{
    _id : Object(“12919”),
    occupation : {
        name : “*”,
        code : 255
    }
}

因此,只返回字段_id职业的查询。 并且在所有记录中,字段职业。名称必须用*替换。

我试过这个查询:

aggregate([
    {
        "$project" : 
        { 
            "_id" : 1, 
            “occupation" : 1,
            “occupation.name" : { $literal:“*” } 
        } 
    }
])

返回以下异常:

{“ ok”:0,“ errmsg”:“由于该字段或其子字段之一已经存在表达式,因此无法为该字段添加表达式。”,“代码”:16400}

有没有办法做到这一点?

您可以像这样指定occupation的嵌套文档投影:

db.test.aggregate([{
    "$project": {
        "_id": 1,
        "occupation": {
            code: 1,
            name: { $literal: "*" }
        }
    }
}])

您可以这样做:

db.collectionName.aggregate([{$project:{
           _id:1,
           occupation:{"name":{$literal:"*"},
                       "code":"$occupation.code"
                      } 
           }    
   }])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM