如果它不存在,如何在 MongoDB 中添加新文档?
Posted
技术标签:
【中文标题】如果它不存在,如何在 MongoDB 中添加新文档?【英文标题】:How to add new document in MongoDB if it doesn't exists? 【发布时间】:2021-08-16 15:14:32 【问题描述】:我是 mongodb 的新手。我正在尝试通过 mongoose 在 mongodb 中插入数据。但我遇到了问题。
我附上了关于我希望如何插入数据的图片。
现在这是我的架构。
const ticketApplicationSchema = new mongoose.Schema(
ticketId:
type: ObjectId,
text: String,
required: true,
ref: "Ticket",
,
applications:[
userId:
type:ObjectId,
default:"adsfadsfasdf",
ref:"User"
,
answers:
type:Array
]
)
还有我的插入数据函数
const insertTicket = (ticketId, ticketObject) =>
return new Promise((resolve, reject) =>
try
ticketApplicationSchema
.findOneAndUpdate(
ticketId ,
ticketObject,
new: true,
upsert: true,
)
.then((data) => resolve(data))
.catch((error) =>
// console.log(error);
reject(error);
);
catch (error)
console.log(error);
// reject(error);
);
;
请帮我看看我哪里做错了?
简而言之,告诉我如何将应用程序数据(用户和答案)作为数组添加到应用程序对象。我希望将数据插入同一个ticketId。当我重新运行代码时,它只是替换当前数据,而不是添加新的用户和票证对象。
这是图片
例如,我的 ticketId 是 abcd1234。现在多个用户可以提交他们的答案。
【问题讨论】:
很难理解你在期待什么。能不能说的清楚一点。 首先,感谢您关注我的问题@TusharShahi。我想插入一个包含用户 ID 和用户提交的 3 个答案的对象。该对象将作为数组插入到应用程序中。换句话说:应用程序:[用户:用户ID,答案:[“a”,“b”,“c”],用户:用户ID,答案:[“a”,“b”,“c”] , user: userId, answers: ["a","b","c"] ] 我认为很清楚。如果没有,请告诉我,我会进一步解释。谢谢。 但是ticketId 是一样的,并且在应用程序内部,您正在添加用户及其答案? 看,我的项目是:会有一个工单列表,用户点击工单,会给出答案。现在我想将它存储在我的数据库中。所以我想添加ticketId,然后添加userId以及他的答案。而且由于会有多个用户,所以我想将它们添加到一个数组中。 这就是我期望添加的数据pasteboard.co/K3YTTKn.png 【参考方案1】:如果你的 newArray 在一个新对象中,你可以像这样简单地 push 那个对象:
ticketApplicationSchema.findOneAndUpdate(
ticketId ,
$push:
applications: newUserObject
).then((data) => resolve(data))
.catch((error) =>
// console.log(error);
reject(error);
);
catch (error)
console.log(error);
// reject(error);
);
【讨论】:
以上是关于如果它不存在,如何在 MongoDB 中添加新文档?的主要内容,如果未能解决你的问题,请参考以下文章
使用 mongoose 通过 update 方法向 mongodb 中的现有文档添加新字段
使用 mongoose 通过 update 方法向 mongodb 中的现有文档添加新字段
如果 mongodb 中不存在,如何修改现有数据或创建新数据?