gpt4 book ai didi

arrays - Mongoose 模型,有效地清理/解析数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:10 25 4
gpt4 key购买 nike

我在 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 默认添加的附加对象,如何从数组中读取数据?将项目添加到现有模型的最佳方法是什么?

感谢任何帮助,谢谢。

最佳答案

如果你想对更新过程有更多的控制,你可以这样做,在 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(`","`);
});
}

关于arrays - Mongoose 模型,有效地清理/解析数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54660547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com