猫鼬/查找文档并从数组中提取对象

时间:2018-08-18 15:41:58

标签: node.js mongodb mongoose

关于该主题有很多问题,但是我能找到并尝试的所有方法都不适用于我的案件 我有以下mongodb模式

var descSchema = new Schema({
    name: {
        type: "String"
    },
    base_name: {
        type: "String"
    },
    type: {
        type: "String"
    },
    size: {
        type: "String"
    }
});

var BaseSchema = new Schema({
    base_name: {
        type: "String",
        unique: true
    },
    friendly_name: {
        type: "String"
    },
    type: {
        type: "String"
    },
    sizes: [
        {
            name: "String",
            value: "String",
            naming: descSchema
        }
    ],
    description: {
        type: "String"
    }
});

我需要找到一个与base_name相匹配的文档(可以与db.find({base_name: myvariable}, function(err, element){...});一起使用),但是从该搜索中,我只需要提取存储在{{ 1}}个对象数组,该对象数组与上一个搜索文档的naming相匹配...

我用and map / indexOf做到了,但是不是很优雅,我相信有一种更快的方法来执行它

sizes

在该集合的样本下面:

"name" = "myvalue"

如果我要求47号尺寸,我想取什么

db.findOne({
    base_name: "myname"
}, "sizes", function (err, element) {
    var tmp = element.toObject();
    var index = tmp.sizes.map(function (a) {
        return a.name;
    }).indexOf("myvalue");
    console.log(tmp.sizes[index].naming);

}); 

0 个答案:

没有答案