【问题标题】:Mongoose Model, cleaning/parsing an Array efficientlyMongoose 模型,有效地清理/解析数组
【发布时间】:2019-07-06 17:13:18
【问题描述】:

我在使用 mongoose 数组时遇到了一些问题,这可能是由于我对库缺乏了解,并且我无法在文档中找到我正在寻找的确切答案。

对于初学者,我有我的架构和模型声明:

const gConfig = new Schema({ aList:  Array, maxChanLimit: Number }), globalConfiguration = mongoose.model('globalConfig', gConfig);

我的命令会获取数组,解析出 _id,然后将新项推送到数组中,并覆盖数据库中的现有项。

    if((message.author.id === g.ownerID) && (g.id.toString() === tocGuild) && message.content.startsWith("!updatealist")) 
{ 
    let mc = message.content.replace("!updatealist ", "");
    globalConfiguration.findOneAndUpdate({},{$push: {"aList":mc }}, { upsert: true }, function(err, data) { 
        if (err) return console.log(err); 
            var str = JSON.stringify(data); str = str.replace(RegExp(/"_id"|"__v"|'/g),""); var arr = str.split(`","`);
        });
}

我觉得必须有更好的方法来做到这一点,根据我所读到的内容,我已经尝试过这样的事情:

globalConfiguration.findOneAndUpdate({},{$push: {"-_id aList":mc }}

但是,这并没有从数组中删除 _id。我想我这样做是一种方法,但我知道它效率不高,而且根本不是动态的,它在代码方面也非常庞大,可以使用库进行简化。

在实践中,使用 Mongoose 从模型中正确读取数组的最佳方法是什么?如果没有 Mongoose 默认添加的其他对象,您如何从数组中读取?将项目添加到现有模型的最佳方法是什么?

感谢您的帮助,谢谢。

【问题讨论】:

    标签: arrays node.js mongodb mongoose


    【解决方案1】:

    如果您想更好地控制更新过程,您可以这样做,在 mongoose 文档中,它建议您可以先查询要更新的项目/文档,一旦查询到该文档并在那里,您可以对其进行更改,例如它是否包含一个数组,您可以推送到它或从中弹出或其他任何东西..

    一切尽在掌握

    所以,

       if((message.author.id === g.ownerID) && (g.id.toString() === tocGuild) && message.content.startsWith("!updatealist")) 
    { 
        let mc = message.content.replace("!updatealist ", "");
        globalConfiguration.findOne({"your query"}, function(err, data) { 
            if (err) throw (err); 
                data.array.push("something");
    
                data.save();// save it again with updates
                var str = JSON.stringify(data); str = str.replace(RegExp(/"_id"|"__v"|'/g),""); var arr = str.split(`","`);
            });
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多