我有一份存储员工姓名和工资详情的文件。该文件存储每个月的工资详情。请注意,字段' 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答案 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
}
}}
)