我正在尝试生成聚合结果,但重命名了一些字段:

db.articles.aggregate([
    {$match: {
        "model.lang": "en"
    }},
    {$project: {
        "_id": 0,
        "model.title": 1,
        "model.address_en": "$address",
        "model.date": { $dateToString: { format: "%Y-%m-%d", date: "$date" } }
    }}
]);

如您所见,我正在尝试将“model.title”重命名为“title”、“model.address”重命名为“address”,“model.date”重命名为“date”。不过运气不好:
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }
{ "model" : { "date" : null } }

我做错什么了?

最佳答案

鉴于articles

{ "_id" : ObjectId("56cea763d43e3500f6768482"),
  "name" : "aaa",
  "model" : { "lang" : "en",
               "title" : "b",
               "date" : ISODate("2016-02-25T07:04:03.414Z")
             },
           }

将“model.title”重命名为“title”、“model.address”重命名为“address”,将“model.date”重命名为“date”。
db.articles.aggregate([
             {$match: {'model.lang': 'en'}},
             {$project: {
                          _id: 0,
                          'title': '$model.title',
                          'date': {$dateToString: {format: '%Y-%m-%d',
                                                   date: '$model.date'}}}}])

结果是
{ "date" : "2016-02-25", "title" : "b" }
{ "date" : "2016-02-25", "title" : "c" }

关于mongodb - 使用$ project的Mongo聚合重命名字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35620274/

10-15 23:48