Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 将元素推送到子文档中数组的任意位置_Mongodb_Mongoose_Mongodb Query - Fatal编程技术网

Mongodb 将元素推送到子文档中数组的任意位置

Mongodb 将元素推送到子文档中数组的任意位置,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,在MongoDB 2.6中,我们可以使用$position()修饰符在文档中的数组更新期间指定数组中的位置。但是我想在子文档中插入一个数组 文档架构: { subdoc: { array: ['0', '1', '2', '5', '6'] } } 以下更新将推送数组末尾的元素 db.collection.update( { _id: tsId }, {$push: { 'subdoc.array': { $each:['3', '4'], $position:3

在MongoDB 2.6中,我们可以使用
$position
()修饰符在文档中的数组更新期间指定数组中的位置。但是我想在子文档中插入一个数组

文档架构:

{
  subdoc: {
    array: ['0', '1', '2', '5', '6']
  }
}
以下更新将推送
数组
末尾的元素

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中有可能吗?

在您的问题中,这是一个公平的命题,但是您的概念基本上是错误的

第一个问题是,您忽略了一个概念,即数组的条目通常从第一个元素的索引
0
开始,因此在这种情况下,您的“定位”超出了一个单位,应该是:

db.collection.update(
{u id:tsId},
{$push:{'subdoc.array':{“$each”:[“3”,“4”],“$position”:3}}
)

既然你现在在正确的位置插入,那么你的元素就在正确的位置。

在你的问题中,这是一个公平的命题,但是你的概念基本上是错误的

第一个问题是,您忽略了一个概念,即数组的条目通常从第一个元素的索引
0
开始,因此在这种情况下,您的“定位”超出了一个单位,应该是:

db.collection.update(
{u id:tsId},
{$push:{'subdoc.array':{“$each”:[“3”,“4”],“$position”:3}}
)

既然你现在在正确的位置插入,那么你的元素就在正确的位置。

在你的问题中,这是一个公平的命题,但是你的概念基本上是错误的

第一个问题是,您忽略了一个概念,即数组的条目通常从第一个元素的索引
0
开始,因此在这种情况下,您的“定位”超出了一个单位,应该是:

db.collection.update(
{u id:tsId},
{$push:{'subdoc.array':{“$each”:[“3”,“4”],“$position”:3}}
)

既然你现在在正确的位置插入,那么你的元素就在正确的位置。

在你的问题中,这是一个公平的命题,但是你的概念基本上是错误的

第一个问题是,您忽略了一个概念,即数组的条目通常从第一个元素的索引
0
开始,因此在这种情况下,您的“定位”超出了一个单位,应该是:

db.collection.update(
{u id:tsId},
{$push:{'subdoc.array':{“$each”:[“3”,“4”],“$position”:3}}
)

既然现在插入的位置正确,那么元素就位于正确的位置。

新运算符的良好用法示例新运算符的良好用法示例新运算符的良好用法示例新运算符的良好用法示例新运算符的良好用法示例新运算符的良好用法示例