gpt4 book ai didi

node.js - Mongo 嵌套数组有条件更新

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

我需要更新下面提到的集合的 userAns,ansBody 字段。其中条件将包含 userId 、userQuestions._id 和 quesId。

{ 
"_id" : ObjectId("5b9624b56b0fe824352e887a"),
"userId" : ObjectId("5b8fd089ee2e6c07765ba024"),
"userQuestions" : [
{
"testStatus" : NumberInt(1),
"_id" : ObjectId("5b9624b56b0fe824352e887f"),
"questionsId" : [
{
"_id" : ObjectId("5b9624b56b0fe824352e8885"),
"quesId" : ObjectId("5b94f1e97b8adc3d46854518"),
"userAns" : "",
"ansBody" : "",
"ansStatus" : ""
}

我尝试过的

  let paramObj={
userId:"5b8fd089ee2e6c07765ba024",
quesSetId:"5b9624b56b0fe824352e887b",
quesId:"5b9619311d9b1b1834f2cd23",
ansId:"5b9619311d9b1b1834f2cd27",
ansBody:"abc123"
}
let questionSet=await QuestionSet.update({userId:paramObj.userId,"userQuestions._id":paramObj.quesSetId},
{ $set: {"userQuestions.$[t].questionsId.$[u].ansBody": paramObj.ansBody} },
{ arrayFilters: [ { "t.quesId":paramObj.quesId },{"u.quesId": paramObj.quesId} ] } );

事件虽然它给了我修改后的输出,但文档没有更新。

最佳答案

您必须将对象 ID 作为 ObjectId 类型传递。

为此,如果您使用 mongoose,请使用将字符串转换为 mongoose 对象类型。

mongoose.Types.ObjectId('id');

我想这会解决你的问题。

https://mongoosejs.com/docs/api.html#types-objectid-js

关于node.js - Mongo 嵌套数组有条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52270578/

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