MongoDB 3.2:在Array Elements中的Aggregation Pipeline中创建新字段

时间:2018-04-07 01:20:07

标签: mongodb aggregation-framework

我正在尝试根据数组字段中的元素在集合中创建一个新字段。我的语法是:

    db.Accidental_Injuries_Clean.aggregate([{$project:
 {Month: {$arrayElemAt: ["$Dateinfo", 0]}},
{Year: {$arrayElemAt: ["$Dateinfo", 2]}}, 
State: 1, Operations: 1, Place: 1, Killed: 1, 
Injured : 1, ObjectId: 1}}, {$out: "Accidental_Injuries_Cleaner"}]);

这是我收藏的文件的一个例子:

     { "_id" : ObjectId("5ac1dff19a91fd53afc379ca"), 
    "State" : "Delaware", "Operations" : "N/A", 
    "Place" : "Newark", "Killed" : 0, "Injured" : 2,
 "Dateinfo" : [ "November", "23,", "2016" ] }

当我尝试给定命令时,收到错误:

E QUERY [thread1] SyntaxError:无效的属性id @(shell):1:93

我是否使用正确的语法来查找数组的属性?我尝试使用“$ Dateinfo.0”,但给了我同样的错误。

任何建议都将不胜感激,非常感谢您的光临。

1 个答案:

答案 0 :(得分:0)

您的查询中几乎没有语法错误,只需使用以下查询即可获得所需的输出。

db.Accidental_Injuries_Clean.aggregate([
{$project:
 {
     Month: {$arrayElemAt: ["$Dateinfo", 0]},
Year: {$arrayElemAt: ["$Dateinfo", 2]},
State: 1, Operations: 1, Place: 1, Killed: 1, 
Injured : 1, ObjectId: 1
}},
{$out: "Accidental_Injuries_Cleaner"}])