我在mongo DB中存储了许多类似以下的文件。
{
"posts": [
{
"_id": "5ee38b041385d900004e78de",
"postName": "Driver one",
"hasSublevels": false,
"isChildOfOther": false,
regions: []
},
{
"_id": "5ee38b0e1385d900004e78df",
"postName": "Driver 2",
"hasSublevels": true,
"isChildOfOther": false,
regions: []
},
{
"_id": "5ee38b1b1385d900004e78e0",
"postName": "Driver 3",
"hasSublevels": true,
"isChildOfOther": true,
regions: []
},
{
"_id": "5ee38b281385d900004e78e1",
"postName": "Driver 4",
"hasSublevels": true,
"isChildOfOther": true,
regions: []
},
{
"_id": "5ee38b3a1385d900004e78e2",
"postName": "Driver 5",
"hasSublevels": true,
"isChildOfOther": false,
regions: []
},
{
"_id": "5ee38b461385d900004e78e3",
"postName": "Driver 6",
"hasSublevels": true,
"isChildOfOther": true,
regions: []
}
],
"_id": "5ee38b499bd40260ad591d7e",
"name": "Cabs NY",
"date": "2020-06-12T14:03:53.343Z",
"__v": 0
},
每个帖子都有一个如上所述的region数组。我想将值添加到posts数组内的region字段。 我如何提出一个请求,首先通过id检索特定文档?其次,允许我在特定的post对象中的regions数组中添加一个或多个值吗?
答案 0 :(得分:0)
第一部分的代码,第二部分,您可以使用id.regions,然后像我一样将数据推送到其中。
result ={
"posts": [
{
"_id": "5ee38b041385d900004e78de",
"postName": "Driver one",
"hasSublevels": false,
"isChildOfOther": false,
regions: []
},
{
"_id": "5ee38b0e1385d900004e78df",
"postName": "Driver 2",
"hasSublevels": true,
"isChildOfOther": false,
regions: []
},
{
"_id": "5ee38b1b1385d900004e78e0",
"postName": "Driver 3",
"hasSublevels": true,
"isChildOfOther": true,
regions: []
},
{
"_id": "5ee38b281385d900004e78e1",
"postName": "Driver 4",
"hasSublevels": true,
"isChildOfOther": true,
regions: []
},
{
"_id": "5ee38b3a1385d900004e78e2",
"postName": "Driver 5",
"hasSublevels": true,
"isChildOfOther": false,
regions: []
},
{
"_id": "5ee38b461385d900004e78e3",
"postName": "Driver 6",
"hasSublevels": true,
"isChildOfOther": true,
regions: []
}
]
}
results = result.posts;
groups = {};
for (var i in results) {
var groupName = results[i]._id;
if (!groups[results[i]._id]) {
groups[groupName] = [];
}
groups[groupName].push({"regions" :results[i].regions});
}
console.log(groups);
答案 1 :(得分:0)
const id = "5ee38b3a1385d900004e78e2";
const post = posts.find(post => post._id === id);
const payload = {city: Nairobi, Country: Kenya};
post.regions.push(payload);
const post = Posts.findById(id);
if(!post) res.status(404).json({
msg: "Specified post not found."
});
post.regions.push(payload)
post.save()
返回新帖子。
答案 2 :(得分:0)
根据MongoDB文档https://docs.mongodb.com/manual/reference/operator/update/push/,您可以使用$ push运算符向数组添加值,就像Alpha的示例一样。
看起来像
db.posts.update(
{ _id: "5ee38b281385d900004e78e1" },
{ $push: { regions: "West" } }
)
或追加多个
db.posts.update(
{ _id: "5ee38b281385d900004e78e1" },
{ $push: { regions: { $each: ["West", "East", "South"] } } }
)