2013-02-07 132 views
4

說我有一個蒙戈DB,看起來像這樣的文件:是否可以在MongoDB文檔的數組中插入元素?

{ 
    pages: [ 
     { 
      elements: [ 
       {id:1}, 
       {id:2}, 
       {id:3} 
      ] 
     }, 
     { 
      elements: [ 
       ... 
      ] 
     } 
    ] 
} 

和元素的網頁中的順序具有語義(例如,疊加)。現在說我想在第一頁的第二個元素之前添加一個新元素。所得到的文檔的期望狀態是這樣的:

{ 
    pages: [ 
     { 
      elements: [ 
       {id:1}, 
       {id:4}, // <------ element inserted here 
       {id:2}, 
       {id:3} 
      ] 
     }, 
     { 
      elements: [ 
       ... 
      ] 
     } 
    ] 
} 

Mongo docs我看到如何將元素添加到該陣列的端部,以及如何更新現有元素的值,而不是如何插入數組的中間(PHP的array_splice)。這是唯一可能的重新分配整個數組到一個新的數組與中間插入所需的元素?

回答

0

不應該只是將層編號存儲爲數組元素的屬性嗎? BSON規範說陣列是鍵 - 值對,所以你需要使用圖層號作爲陣列中的鍵(MongoDB使用BSON存儲數據)

+0

雖然MongoDB中存儲其在BSON格式的數據,它肯定不會讓你插入/更新*前預BSONize它和*它保留了數組元素的順序。答案可能是「不,MongoB不能這樣做」,但我認爲我的問題仍然有效。 – brnt

1

MongoDB現在支持此功能。您可以使用$position運算符將元素插入到數組的中間。

好運

相關問題