如何在Mongodb

时间:2015-12-01 01:28:54

标签: mongodb nosql

我有一份存储员工姓名和工资详情的文件。该文件存储每个月的工资详情。请注意,字段' Employee_Salary'不是数组。这是我的文件。

{
    "_id" : 5.0000000000000000,
    "Employee_Name" : "John Karrl",    
    "Employee_Salary" : {    
        "April-2015" : { 
            "actual_salary" : 300,
            "bonus" : 0,
            "penalty" : 0,
            "bonus_pen_detail" : "NA",
            "month_paid" : "April",
            "year_paid" : 2015,
            "total_amount_paid" : 300
        }
   }
}

现在,我想更新此文档,以插入或添加下个月(即2015年5月)的新工资明细。我尝试过使用' $ push'命令,但它不起作用,并给我以下错误。

'字段' Employee_Salary'必须是一个数组,但在文档{_id:5.0}'。

中的类型为Object

1 个答案:

答案 0 :(得分:1)

$push 只能应用于数组元素。由于Employee_Salary是对象,您必须执行 $set 操作,如下所示:

db.employee.update(
  {_id: 5.0},
  {$set: {
    'Employee_Salary.May-2015': {
       "actual_salary" : 300,
       "bonus" : 0,
       "penalty" : 0,
       "bonus_pen_detail" : "NA",
       "month_paid" : "May",
       "year_paid" : 2015,
       "total_amount_paid" : 300
     }
   }}
)