[英]How to add to this collection in MongoDB
所以我有一個 EmployeeSchema ,它接收一個用戶和一組員工。 每個員工都有一個電子郵件、姓名、職位和一個問答數組。 我希望能夠添加到 questionandanswer 數組中,但我不知道如何使用 user.id 和 emplyoee.email 或 employee.id 查找集合。 例如,假設我想找到 matt@concur.com 並添加到 questionandanswer 數組中。
{
"_id": {
"$oid": "5b7bb55197243619089d5a2f"
},
"user": {
"$oid": "5b7aeb3cf0861f453c279910"
},
"employee": [
{
"_id": {
"$oid": "5b7bb8893b55b9192cd84f58"
},
"email": "matt@concur.com",
"name": "Matt J",
"jobtitle": "HR Manager",
"questionandanswer": []
},
{
"questionandanswer": [],
"_id": {
"$oid": "5b7bb5db3b55b9192cd84f57"
},
"email": "john@concur.com",
"name": "John Doe",
"jobtitle": "Software Engineer"
}
],
"__v": 2
}
這就是我添加的員工現在的樣子:
const employeeFields = {};
employeeFields.user = req.user.id;
if (req.body.email) employeeFields.email = req.body.email;
if (req.body.name) employeeFields.name = req.body.name;
if (req.body.jobtitle) employeeFields.jobtitle = req.body.jobtitle;
Employee
.findOne({
user: req.user.id
})
.then(employee => {
employee.employee.unshift(employeeFields);
employee.save().then(employee => res.json(employee));
//new Employee(employeeFields).save().then(employee => res.json(employee));
})
您可以使用以下查詢語法從員工數組中查找員工
db.Employee.findOne({ user.$oid : req.user.id, "employee" : { $elemMatch :{ email: req.body.email } } }, function(err, employee) {
employee.questionandanswer.push(" your question and answer object from request ");
employee.save();
});
試試這個,讓我知道它是否有效。
根據您在問題中提到的內容,如果我理解錯誤,請糾正我。 您正在嘗試根據請求正文中的內容過濾數據:
從性能的角度來看,當您在一個簡單的查詢中查找和更新時,這會更好,這就是我在這里使用findOneAndUpdate
此外,我想強調的是,我注意到您將employee
定義為一個array
,這就是我使用employee.0
或employee.1
因此如果您有一個員工屬性作為對象,您可以簡單地忽略0
和1
。
let employeeFields = {};
employeeFields["user.$oid"] = req.user.id;
if (req.body.email) employeeFields["employee.0.email"] = req.body.email;
if (req.body.name) employeeFields["employee.0.name"] = req.body.name;
if (req.body.jobtitle) employeeFields["employee.0.jobtitle"] = req.body.jobtitle;
db.Employee.findOneAndUpdate( employeeFields , "$push": { "employee.1.questionandanswer": **your question and answer object**});
看看並讓我知道它是否有效,如果無效,請發表評論以了解您的問題並能夠更好地為您提供幫助。
更多幫助: https : //docs.mongodb.com/manual/reference/method/db.collection.findOneAndUpdate/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.