猫鼬无法通过“field.attributes”进行嵌套搜索
Posted
技术标签:
【中文标题】猫鼬无法通过“field.attributes”进行嵌套搜索【英文标题】:mongoose unable to make nested search through "field.attributes" 【发布时间】:2021-01-05 06:06:18 【问题描述】: newFormName = req.body.name;
newFormQuestions = req.body.questions;
formId = req.body.formId;
User.updateOne(
"forms._id": formId,
,
$set:
"forms.$.name": newFormName,
"forms.$.questions": newFormQuestions,
,
,
(errUpdate, resultUpdate) =>
if (errUpdate)
return res.status(500).json( sucess: false, error: errUpdate );
else
return res.status(200).json( sucess: true, data: resultUpdate );
);
以上代码负责更新用户数据库中的某些字段。
[ "enrolledEventID": [], “isOrganiser”:是的, “isAdmin”:假, “形式”: [ “问题”: [ "questionType": "文本", “textInputLabelName”:“asdsadsad” , "questionType": "文本", "textInputLabelName": "asdasdasdasd" ], "_id": "5f6070b5002a5249b050bd1e", "name": "测试表 4", "创建日期": "2020-09-15T07:43:49.389Z", “__v”:0 , “问题”: [ "questionType": "文本", “textInputLabelName”:“asdsadsad” , "questionType": "文本", "textInputLabelName": "asdasdasdasd" ], "_id": "5f607140cd6faa39241f7c8a", "name": "测试表 56", "创建日期": "2020-09-15T07:46:08.012Z", “__v”:0 , “问题”: [ "questionType": "评分", "textInputQuestionTitle": "asdasdasd", “总评分”:0 , "questionType": "文本", "textInputLabelName": "asdasdasdasd" , "questionType": "文本", "textInputLabelName": "asdasdasdasdasd" ], "_id": "5f6315145e6c794e78bcce73", "name": "新形式", "创建日期": "2020-09-17T07:49:40.307Z", “__v”:0 , “问题”: [ "questionType": "评分", "textInputQuestionTitle": "asdasdasdsadad", “总评分”:0 ], "_id": "5f6316895e6c794e78bcce74", "name": "新格式", "创建日期": "2020-09-17T07:55:53.537Z", “__v”:0 , “问题”: [ "questionType": "文本", “textInputLabelName”:“asdsadsad” , "questionType": "文本", "textInputLabelName": "asdasdasdasd" ], "_id": "5f632b0f12f05d5028c96942", "name": "测试表 23232323", "创建日期": "2020-09-17T09:23:27.137Z", “__v”:0 ], "_id": //id, "fullname": //名字, "email": //hotmail, "password": //密码, “__v”:0 , "enrolledEventID": [], “isOrganiser”:是的, “isAdmin”:假, “形式”: [], "_id": //id, "fullname": //名字, “电子邮件”://电子邮件, "password": //密码, “__v”:0 ]用户数据外观示例
问题是匹配总是返回 0,我是猫鼬的新手,在做了一些研究之后,我似乎应该能够通过"forms._id"
访问标准中的forms._id
,做了什么我做错了吗?
我已确保用户数据中存在 formId。
【问题讨论】:
如果forms._id
是数据中的对象ID,那么您需要使用mongoose.Types.ObjectId(formId)
转换为对象ID
解决了,你的就是答案
我没有回答,因为它只是拼写错误,或者您错过了从字符串到对象的类型对话。您可以删除您的问题。
【参考方案1】:
确保 newFormQuestions 具有与问题相同的对象键。
为您不确定的每个步骤执行 console.log。
作为此猫鼬更新的替代方案,请使用 const temp = User.find(forms._id:formId) 首先,
然后您可以在将值分配给您找到的对象后使用 User.save()。
祝你好运^^
【讨论】:
以上是关于猫鼬无法通过“field.attributes”进行嵌套搜索的主要内容,如果未能解决你的问题,请参考以下文章