在mongoose nodejs中更新或添加新对象到数组中

时间:2016-09-10 10:08:03

标签: node.js mongoose

我是节点Js的新手,所以我很难更新(插入)一个新对象 阵列。

这是架构:

var Schema = new mongoose.Schema({
    name: String,
    ips: [{
        ip: {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'Ip'
        }
    }]
});

我正在尝试将新行添加到ips数组中,如下所示:

IP架构:

var IpSchema = new mongoose.Schema({
    ip: String,
    objects: [{
        object:{
                type: mongoose.Schema.Types.ObjectId,
                ref: 'object'
        }
    }]
});

var tmpIp = new Ip({
    ip: "5.5.5.5",
    objects:
    [{object:obj._id}]
});

tmpIp.save();

DB.update({name: 'xxxx'},{$push: {ips:{tmpIp}}},{upsert:true},function(err){
        if(err){
                console.log(err);
        }else{
                console.log("Successfully added");
        }
});

仅在执行时创建_id(例如3行)。除此之外,创建的ID与IPS表上的任何真实ip无关。

"ips" : [ 
        {
            "ip" : ObjectId("57d12ddf16a6f6fc175fbfb5"),
            "_id" : ObjectId("57d12ddf16a6f6fc175fbfbc")
        }, 
        {
            "ip" : ObjectId("57d12ddf16a6f6fc175fbfb7"),
            "_id" : ObjectId("57d12ddf16a6f6fc175fbfbb")
        }, 
        {
            "_id" : ObjectId("57d12defd5cc02b810601bb4")
        }
] 

我想要达到的结果就像前两行: ip - 创建的IP对象_id的对象ID,而不仅仅是_id

1 个答案:

答案 0 :(得分:0)

全部谢谢

唯一缺少的是添加ip(由于某些原因我没有)请看粗体文字。

PhishingDB.update({url: urlReq},{$push: {ips:{**ip**:tmpIp}}},{upsert:true},function(err){ if(err){ console.log(err); }else{ console.log("Successfully added"); } });