在复杂的mongoDB数据模型中处理数据

时间:2013-04-09 07:13:54

标签: mongodb

{
name: “Bimal”,
role: “developer”,
reports_to: “girish”,
technology:[{
  name: “PHP”,
  rating: 5
},{
  name: “JavaScript”,
  rating: 4    
}],
project: [{
    project_name: “TGT”,
    client_name: “Said”,
    estimated_time: 20,
    tasks: [{
        start_time: new Date(2013, 2, 13, 7, 47),
        end_time: new Date(2013, 2, 15, 7, 47),
        Description: “design the page”
    }, {
        start_time: new Date(2013, 3, 13, 7, 47),
        end_time: new Date(2013, 2, 13, 7, 47),
        Description: “coding the page”
    }]
}] 

}

我有这个复杂的数据库结构。现在我需要在JavaScript之后添加一项新技术和评级。我还需要编辑具有“设计页面”描述的任务描述。

1 个答案:

答案 0 :(得分:1)

要添加新技术,请使用$ push或$ addToSet。要更新“项目”部分中的描述,请使用位置运算符$ with $ set。请记住,在子文档中顺序不是一直维护。因此,如果您需要技术密钥中的订单,请再添加一个名为Order的密钥,并在每个子文档中使用它。在客户端显示时,您可以订购它。 我删除了第二个查询。如果你想做甚至限制的方法之一是你可以在客户端提取数据,然后更新文档并将其保存回来,但没有直接命令这样做,你必须在客户端循环

db.Collection.update({"name" : "Bimal"} , { "technology" : { $addToSet : { name: “New Technology”,rating: 1}}})

如果可能,如果你没事,你可以像这样重新构建你的文件

  {tasks : [{ "ProjectName: "" , startDate : "" , EndDate : "" , Description : "" } ]

我知道它会多次复制数据,但这是您可以更新任务子文档中任何字段的方法之一。