将新对象插入特定数组索引

Posted

技术标签:

【中文标题】将新对象插入特定数组索引【英文标题】:Inserting New Object Into Specific Array Index 【发布时间】:2016-03-06 16:45:59 【问题描述】:

有一个 MongoDB 集合,它是一个从 Angular 资源返回的对象数组。

[_id: "565ee3582b8981f015494cef", button: "", reference: "", text: "", title: "", …, 
 _id: "565ee3582b8981f015494cf0", button: "", reference: "", text: "", title: "", …]

我必须允许用户将一个对象插入到数组的任何索引中,并通过 Mongoose 保存到 MongoDB。

var object = 
    button: "",
    image: ,
    reference: "",
    text: "",
    title: "",
;

我了解如何将对象推送到数组的末尾,但是如何指定插入的索引?

到目前为止,考虑首先创建对象:

Slide.create(object, function(result) 
    console.log(result);
);

然后使用update方法更新数组中的位置:

【问题讨论】:

【参考方案1】:
var object = 
    button: "",
    image: ,
    reference: "",
    text: "",
    title: "",
;

arr.splice(2, 0, object);

object 推送到数组中的2nd index,即它将是第三个元素。

【讨论】:

我需要将此对象更新为 MongoDB... 将澄清问题。 TY【参考方案2】:

假设您的收藏中有以下文档


        "_id" : ObjectId("565eed81abab97411fbe32fc"),
        "docs" : [
                
                        "_id" : "565ee3582b8981f015494cef",
                        "button" : "",
                        "reference" : "",
                        "text" : "",
                        "title" : ""
                ,
                
                        "_id" : "565ee3582b8981f015494cf0",
                        "button" : "",
                        "reference" : "",
                        "text" : "",
                        "title" : ""
                
        ]

您需要使用$position 运算符来指定数组中$push 运算符插入元素的位置,如文档中所述:

要使用$position 修饰符,它必须与$each 修饰符一起出现。

演示

var object = 
    button: "",
    image: ,
    reference: "",
    text: "",
    title: "",
;

db.slide.update(/*filter*/, 
     '$push':  'docs':  '$each': [object], '$position': 1  
)

您新更新的文档将如下所示:


        "_id" : ObjectId("565eed81abab97411fbe32fc"),
        "docs" : [
                
                        "_id" : "565ee3582b8981f015494cef",
                        "button" : "",
                        "reference" : "",
                        "text" : "",
                        "title" : ""
                ,
                
                        "button" : "",
                        "image" : 

                        ,
                        "reference" : "",
                        "text" : "",
                        "title" : ""
                ,
                
                        "_id" : "565ee3582b8981f015494cf0",
                        "button" : "",
                        "reference" : "",
                        "text" : "",
                        "title" : ""
                
        ]

【讨论】:

以上是关于将新对象插入特定数组索引的主要内容,如果未能解决你的问题,请参考以下文章

将新对象保存在索引路径 Core Data

如何将对象(模型类型对象)插入到 Laravel 中特定索引号的集合对象中?

检查数组对象中特定索引的所有值是不是为 Null?

在具有特定键的特定值的数组中查找对象的索引[重复]

php 通过特定键/属性索引数组/对象的集合。

使用 Array.prototype.map 将具有索引的对象插入二维数组