Mongodb MondoDB聚合-重新映射内部文档

Mongodb MondoDB聚合-重新映射内部文档,mongodb,aggregate,remap,Mongodb,Aggregate,Remap,在以下示例中,如何重新映射这样的内部文档: db.customers.aggregate( [ { $project: { "_id": 0, "First Name": "customerDetails.firstName", "Last Name": "customerDetails.lastName&quo

在以下示例中,如何重新映射这样的内部文档:

db.customers.aggregate(
[
    {
        $project: {
            "_id": 0,
            "First Name": "customerDetails.firstName",
            "Last Name": "customerDetails.lastName",
            "Full Name": { $concat : [ "customerDetails.firstName", " ", "customerDetails.lastName" ] }
        }
    }
]
)

像这样放置“$customer.firstName”不起作用,它基本上不返回任何内容,而不是获取内部字段的值

客户集合的结构示例:

{
    "_id" : ObjectId("5fb3c41454742e0d3c9f7605"),
    "customerDetails" : {
        "firstName" : "Robert",
        "lastName" : "Green",
        "phoneNumber" : "0878712375",
        "email" : "robert.green@gmail.com"
    }
}
预期结果:

{
    "First Name": "Robert",
    "Last Name": "Green",
    "Full Name": "Robert Green"
}
实际结果:

{
    "First Name": "customerDetails.firstName",
    "Last Name": "customerDetails.lastName",
    "Full Name": "customerDetails.firstName customerDetails.lastName"
}

使用
$
引用字段,应该可以:

db.customers.aggregate(
[
    {
        $project: {
            "_id": 0,
            "First Name": "$customerDetails.firstName",
            "Last Name": "$customerDetails.lastName",
            "Full Name": { $concat : [ "$customerDetails.firstName", " ", "$customerDetails.lastName" ] }
        }
    }
]

使用
$
引用字段,应该可以:

db.customers.aggregate(
[
    {
        $project: {
            "_id": 0,
            "First Name": "$customerDetails.firstName",
            "Last Name": "$customerDetails.lastName",
            "Full Name": { $concat : [ "$customerDetails.firstName", " ", "$customerDetails.lastName" ] }
        }
    }
]

如果您能提供您的文档样本以及当前和预期的输出,那就太好了:)您所说的“不工作”是什么意思?当然,
$customer.firstName
不起作用,如果该字段名为
customer**Details**
,如果您能提供您的文档样本以及当前和预期的输出,那就太好了:)您所说的“不起作用”是什么意思当然,
$customer.firstName
不起作用,如果该字段再次被称为
customer**Details**
,您所说的“将不起作用”是什么意思?对不起,我弄错了。它正在工作。我在查看这些字段不存在的记录时,错误地认为它不起作用。如果他们不在场,失踪是很正常的。再说一次,你说的“行不通”是什么意思?对不起,我错了。它正在工作。我在查看这些字段不存在的记录时,错误地认为它不起作用。如果他们不在场,失踪是很正常的。