gpt4 book ai didi

arrays - 将数据推送到嵌套数组nodeJs、MongoDB中

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

我有类似的文档,

{
"_id" : ObjectId("5ab4cc12c773133bae3d8dc9"),
"__v" : 19.0,
"geoGraphicalFilter" : {
"aCountries" : [
{
"country" : "Spain",
"_id" : ObjectId("5ad49ab21210c42aa6ccba23"),
"cities" : [ ]
},
{
"country" : "India",
"_id" : ObjectId("5ad49ab21210c42aa6ccba24"),
"cities" : [ ]
}
]
}
}

型号

const HuntingWindow = new Schema({
geoGraphicalFilter: {
aCountries: [
{
country: String,
cities: { type: Array }
}
]
},
});

片段

const addCityFilter = (req, res) => {
if (req.body.aCities === "") {
res.status(409).jsonp({ message: adminMessages.err_fill_val_properly });
return false;
} else {
var Cities = req.body.aCities.split(",");
huntingModel.update({ _id: req.body.id,"data.geoGraphicalFilter.aCountries":req.body.sName },
{$push:{"geoGraphicalFilter.0.aCountries.$.cities":Cities}},
(error, data) => {
// Cities.forEach(element => {
// data.geoGraphicalFilter.aCountries.find(req.body.sName)
// });
data.save((error, success) => {
res.status(200).jsonp({
message: adminMessages.succ_countryFilter_added
});
});
});
}
};

现在我想首先通过 root id 查找文档,然后我想匹配国家/地区名称并将城市插入数组中。我是 MongoDB 和 Nodejs 新手,我该怎么做?虽然我正在尝试更新查询,但我认为我以错误的方式执行此操作,请帮助我。

最佳答案

尝试以下代码:

huntingModel.update(
{ _id: ObjectId("5ab4cc12c773133bae3d8dc9"), "geoGraphicalFilter.aCountries.country": "Spain" },
{ $addToSet: { "geoGraphicalFilter.aCountries.$.cities": { $each: [ "city1", "city2" ] } } }
)

您应该指定两种过滤条件:一种用于整个文档,另一种用于匹配数组元素。然后您可以使用 $ 运算符来更新该数组中的第一个匹配文档。要推送多个值,您可以使用 $each 运算符。为了确保没有重复,您应该使用 $addToSet

关于arrays - 将数据推送到嵌套数组nodeJs、MongoDB中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49869946/

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