![](/img/trans.png)
[英]How do you push to an array inside of an object, inside of an array with MongoDB?
[英]How do i $push to a object in an array in a mongoDB database with node?
我想將一個對象推送到我的 MongoDB 數據庫中數組內的一個對象。 我正在嘗試使用 $push submits[postDate] 但它在第一個 "[" 下給了我一條紅線。 知道如何解決這個問題嗎?
我的代碼:
app.post('/add-submit', (req,res) => {
let postDate = new Date();
let dd = String(postDate.getDate()).padStart(2, '0');
let mm = String(postDate.getMonth() + 1).padStart(2, '0');
let yyyy = postDate.getFullYear();
postDate = mm + '/' + dd + '/' + yyyy;
subject = req.body.subject
let pushValue = {
time: req.body.time,
description: req.body.description,
date: postDate
}
console.log(pushValue)
console.log(postDate)
let myquery = { username: req.body.username};
let newvalues = {
$push : {
submits[postDate] : {
[subject] : pushValue
}
}
}
db.collection("users").updateOne(myquery, newvalues, (err, response) => {
if (err) throw err;
console.log("1 document updated");
res.redirect('/users/'+req.body.id)
});
})
但我收到此錯誤:
D:\Users\willi\Documents\Node\StudyWebApp\server.js:186
submits[postDate] : {
^
SyntaxError: Unexpected token '['
at wrapSafe (internal/modules/cjs/loader.js:1053:16)
at Module._compile (internal/modules/cjs/loader.js:1101:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...
這就是我希望它在數據庫中的樣子:
謝謝。
您的對象模型不是很清楚,但我認為您需要使用$
關鍵字。
要獲得“提交”中的位置,您可以嘗試submit[postDate]
但沒有正確的方法,相反,您需要這樣的東西:
db.collection.update({
"username": "test",
"submits.date": "16/10/2020"
},
{
$push: {
"submits.$.subjects": {
"subjectName": {
"time": "1234",
"description": "desc"
}
}
}
})
我將嘗試解釋它的工作原理,它非常簡單。
第一個對象是您要“指向”的位置。 就像一個“查找”,你想做第二部分(推送)的地方。 因此,使用$
運算符,您將在文檔的確切部分工作。
所以,第二個對象( $push
對象)是操作。 使用submits.$.subjects
操作將在文檔的這個特定部分完成。
我沒有在 Node 中測試過它,但你的代碼有myquery
和newvalues
變量,所以它應該是相同的並且可以工作。
順便說一句,我已經在這里回復了查詢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.