从id中获取父对象,该对象与NodeJS

时间:2016-05-26 12:09:19

标签: javascript node.js mongodb mongoose

我在NodeJS中使用mongoose,我有一个来自子数组的id。我的模型定义如下:

var thingSchema = new schema({
    thingId: String,
    smallerThings : [smallerThingsSchema]
});

var smallerThingsSchema = new schema({
    smallerThingId: String,
    name : String,
    anotherName : String
});

我有smallerThingId,但我希望获得thingId

现在我有一个看起来像这样的for循环(我认为非常无效)。潜在地,可能有100,000件事情。

//Find all things
thingModel.find({}, null, function (error, things) {
    if (error) {
        callback(error);
    }
    else {
        //Go through all things  
        for(var i = 0; i < things.length; i++){
            //check if a thing with the array of smaller things matches the id
            for(var j = 0; j<things[i].smallerThings.length; j++){
                if(things[i].smallerThings[j].id === smallerThingId){
                    //return it 
                    return things[i];
                }
            }
        }
    }
});

感谢任何帮助或我可以在哪里(docs / blog / other)学习如何处理这种情况。

2 个答案:

答案 0 :(得分:5)

要按子文档ID获取文档,您可以使用以下代码:

thingModel.find({"smallerThings.smallerThingId":smallerThingId}, null, function (error, things) {

});

这将返回具有“smallerThingId”的文档。

答案 1 :(得分:2)

你可以使用mongoose find:

thingModel.find({"things.smallerThings.id": smallerThingId }, null, function (error, things) {
    if (error) {
        callback(error);
    }
    else {
        //do what you need
    }
});