我有mongodb的以下架构(对于我的平均堆栈应用程序)。
var helpSchema = new Schema({
//_id: Number,
description: String,
summary: String,
flows: [{ type: Schema.Types.ObjectId, ref: 'Flow' }]
});
var flowSchema = new Schema({
_problem: { type: Number, ref: 'Help' },
name: String,
steps: [{ type: Schema.Types.ObjectId, ref: 'Step' }]
});
我正在插入数据库,如下所示:
var help = new models.Help();
help.description = 'description';
help.summary = 'summary';
var flow = new models.Flow();
flow.name = 'name';
help.flows.push(flow);
help.save(function(err) {
...
}
将值插入db并且我可以查询。 db.helps.find(); 返回结果
{ "_id" : ObjectId("5786520f580cc96c31c90769"), "summary" : "summary", "description" : "description", "flows" : [ ObjectId("5786520f580cc96c31c9076a") ], "__v" : 0 }
现在我可以从命令行查询并查看流数组中对象内的值吗?我搜索并发现可以查询嵌套对象中的字段。但是我可以在命令行中显示这个值吗?
答案 0 :(得分:1)
要仅请求数组中字段flows
的值,您可以使用map。
它需要作为输入参数:
应用于光标访问的每个文档的函数。
这会给你:
flows_id = function(doc) { return doc.flows; }
db.helps.find().map(flows_id)
要从ObjectId
值中提取值,您需要为每个项目调用valueOf
:
flows_id = function(doc) {
var array = [];
doc.flows.forEach(function(myDoc){
array.push(myDoc.valueOf());
});
return array;
}
db.helps.find().map(flows_id)