2014-04-14 54 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 } }} 
) 

而且由于你现在插入正确的位置,那么你的元素是在正确的位置。