关于该主题有很多问题,但是我能找到并尝试的所有方法都不适用于我的案件 我有以下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);
});