对猫鼬来说很新鲜。我可以从子文档模型中找到一个吗?
我有一个名为可交付成果的子网站,它是项目的子项
我想做的是找到我的可交付成果模型,所以我不必在项目上找到
{project.child.child.child.deliverables._id: req.id}
这可能吗?或者每次都必须从项目模型开始?以下是我使用示例findOne的示例设置。
'use strict';
//////////////model/////////////////
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var deliverablesSchema = new Schema({
title:{
type:String,
}
})
var ProjectSchema = new Schema({
name: {
type: String,
},
deliverables: [deliverablesSchema],
});
mongoose.model('Deliverable', deliverablesSchema);
mongoose.model('Project', ProjectSchema);
//////////////controller/////////////////
var mongoose = require('mongoose'),
Project = mongoose.model('Project'),
Deliverable = mongoose.model('Deliverable'),
_ = require('lodash');
exports.findDeliverable = function(req, res) {
Deliverable.findOne({'_id': req.params.deliverableId}).exec(function(err, deliverable) {
if(deliverable){
//return
}
});
};
答案 0 :(得分:2)
只有在声明了架构http://mongoosejs.com/docs/subdocs.html
之后,才能在文档中找到子文档以下是here:
的示例Project.findOne({
'_id': myid
}).exec(function (err, p) {
if (p) {
//return
var deriv = p.deliverables.filter(function (oneP) {
return oneP._id === 'myderivableid';
}).pop();
}
});
检索该数据
答案 1 :(得分:0)
保持挖掘并发现: https://stackoverflow.com/a/28952991/2453687
您仍然需要先提取主文档,但可以轻松深入查看您正在寻找的特定对象并进行快速更新,然后只需一次更新整个主文档。
死简单。像魅力一样。