2012-03-13 154 views
1

自從一週以來我一直在使用MongoDB,我對它有很多樂趣!從其他對象中獲取對象

到目前爲止,我正在構建的項目和里程碑測試應用程序。看到下面的結構:

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

我現在正在爲里程碑做一個編輯表單。我想編輯讓我們說,「測試里程碑2」。所以,到目前爲止,我已經獲得了相關的項目,然後從關聯的集合中選擇了正確的里程碑。但我想知道是否有辦法直接獲得里程碑? (在我的情況下)

如果是,那麼你能給我一個如何做的例子嗎?

謝謝!

回答

0

將您的里程碑數組嵌入項目本身。

或繼續做你現在正在做的事情。 (你沒有做錯,只是它的本質)

+0

里程碑嵌入我的項目中,不是嗎?你能告訴我一個你想說什麼的例子嗎?謝謝! – TomShreds 2012-03-14 01:10:04

1

你可以用直接查詢來做到這一點。你只需要使用Positional Operator

假設您要將「測試里程碑2」更新爲「測試里程碑2」。您可以運行下面的查詢:

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

$握着你的原始陣列發現的地方(update語句的第一部分)。這可以讓你直接跳到你想修改的數組元素。

很高興聽到您在享受MongoDB - 這很有趣。

+0

感謝您的回覆。但是如果另一個項目有一個稱爲「測試里程碑2」的里程碑呢?在你給我的例子中,這是所有的項目,所以我想知道。謝謝! – TomShreds 2012-03-14 01:09:20

+1

我給出的查詢將更改與「測試里程碑2」匹配的所有里程碑的名稱。當它運作時,每個位置運算符將應用於它影響的當前文檔。如果您只想影響一個,則需要在更新語句的第一部分中過濾條件。 – SethO 2012-03-14 02:38:16