从中获取对象位于其他对象内

时间:2012-03-13 23:53:33

标签: mongodb nosql

我一周以来一直在使用MongoDB,我玩得很开心!

到目前为止,我正在构建测试应用程序作为项目和里程碑。请参阅以下结构:

{
  "code": "test-project",
  "milestones": [
    {
      "name": "Test Milestone",
      "code": "test-milestone"
    },
    {
      "name": "Test Milestone 2",
      "code": "test-milestone-2"
    }
  ],
  "name": "Test Project"
}

我现在正在制作里程碑的编辑表格。我想编辑让我们说“测试里程碑2”。所以,到目前为止,我已经获得相关项目,然后从相关集合中选择正确的里程碑。但是我想知道是否有办法直接获得里程碑? (在我的情况下)

如果是,那么你能给我一个如何做到的例子吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用直接查询执行此操作。您只需使用Positional Operator

假设您要将“测试里程碑2”更新为“测试里程碑二”。您可以运行以下查询:

 db.Projects.update( {"milestones.name" : "Test Milestone 2"}, {$set : {"milestones.$.name" : "Test Milestone Two"}} )

$保存原始数组的位置(update语句的第一部分)。这使您可以直接跳转到要修改的数组元素。

很高兴听到你在享受MongoDB - 这很有趣。

答案 1 :(得分:0)

将里程碑数组嵌入项目本身。

或者继续做你现在正在做的事情。 (你没有做错。这只是它的本质)