【问题标题】: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 的对象?

【问题讨论】:

    标签: node.js arrays mongoose find


    【解决方案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 });
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2016-02-05
    • 2017-03-28
    • 2014-01-14
    • 2019-03-28
    • 1970-01-01
    • 2015-12-28
    • 2021-05-06
    相关资源
    最近更新 更多