猫鼬从模型中的数组中查找对象
Posted
技术标签:
【中文标题】猫鼬从模型中的数组中查找对象【英文标题】:mongoose find an object from an array in a model 【发布时间】:2021-01-24 14:29:08 【问题描述】:我遇到了一些困难,因为我很固执,没有为选择单独制作模型。所以我有一个问题模型,它有一个嵌入的选择模式,它包含一系列选择,每个对象都有他的 id。我只想返回给定 id 的选择,所以经过多次尝试后,我使用了
Question.findOne("choices._id": choiceId)
.select('choices')
但它返回了我在数组中具有该 id 的问题,以及其他选择。例如,我正在寻找 id 为 5f7f05f8aec5103db6c15534 的选择,但它返回所有选择:
"_id": "5f7f05f8aec5103db6c15532",
"choices": [
"isCorrect": false,
"_id": "5f7f05f8aec5103db6c15534",
"content": "pe asta"
,
"isCorrect": true,
"_id": "5f7f05f8aec5103db6c15533",
"content": "pe asta update 2"
]
是否有可能返回数组中唯一具有该 ID 的对象?
【问题讨论】:
【参考方案1】:你可以试试这个,
Question.findOne( 'choices._id': $elemMatch: _id: choiceId , function (err, question)
// your code goes here
);
【讨论】:
错误:不能使用 $elemMatch Question.find().elemMatch("choices", _id:choiceId) 改变了语法,仍然得到和以前一样的响应 你也可以试试:Question.findOne( 'choices._id': choiceId , 'choices.$': 1 );
以上是关于猫鼬从模型中的数组中查找对象的主要内容,如果未能解决你的问题,请参考以下文章