2014-04-14 91 views
1

推動元件在陣列的任何位置在MongoDB中2.6我們可以使用$positionhttp://docs.mongodb.org/master/reference/operator/update/position/)修飾符指定在文檔陣列的更新期間的陣列中的位置。但我想插入一個子文檔的數組中。在子文檔

文檔模式:

{ 
    subdoc: { 
    array: ['0', '1', '2', '5', '6'] 
    } 
} 

以下更新推在array末的元素..

db.collection.update(
    { _id: tsId }, 
    {$push: { 'subdoc.array': { $each:['3', '4'], $position:3 } }}); 

所以,結果是

{ 
    subdoc: { 
    array: ['0', '1', '2', '5', '6', '3', '4'] 
    } 
} 

但我希望

{ 
    subdoc: { 
    array: ['0', '1', '2', '3', '4', '5', '6'] 
    } 
} 

在MongoDB 2.6中可能嗎?

+1

新操作符的良好用法示例 –

回答

3

在你的問題中,這是一個公平的主張,但你基本上有錯誤的概念。

的第一個是你已經錯過了一般陣列具有開始的0的第一個元素的索引在他們的作品的概念,讓你的「定位」是出由一個單元在這種情況下,應已經:

db.collection.update(
    { _id: tsId }, 
    {$push: { 'subdoc.array': { "$each":["3", "4"], "$position": 3 } }} 
) 

而且由於你現在插入正確的位置,那麼你的元素是在正確的位置。