【发布时间】:2018-12-14 15:54:50
【问题描述】:
下面是我的架构。
var prayerSchema = new Schema({
totalSteps:{
type: Number
},
name: String,
steps: [{type: Schema.Types.ObjectId, ref:'Step'}]
});
var stepSchema = new Schema({
stepNumber : {
type: Number
},
_prayer : {
type: Schema.Types.ObjectId, ref: 'Prayer', required: true
}
});
每个祈祷都会有总步数、名称和步数。
每个步骤都有与之关联的 stepNumber 和祷告模型。
步骤文档将如下所示:
{
"stepNumber":1,
_prayer:[
"name":"prayer1",
"totalSteps":5,
"steps":[]
]
},
{
"stepNumber":2,
_prayer:[
"name":"prayer2",
"totalSteps":10,
"steps":[]
]
}
我正在尝试按名称查询 stepSchema 的子文档(_prayer) 和 stepSchema 的 stepNumber 中是否存在。
Step.find({_prayer :{ name: req.query.name} }, {stepNumber: 1});
Step.find({'_prayer.name' : req.query.name, stepNumber: 1});
以上这两个代码都不起作用。 我发现的一种方法是首先通过名称查询 Prayer 文档并获取其 _id 并通过找到的 _id 和 stepNumber 再次查询 Step 文档。
Prayer.findOne({name:"name"})
.exec((err, prayers) => {
Rakah.find({ _prayer: prayers._id, stepNumber: stepNumber })
....
});
但是这种方法对于嵌套文档会变得困难。 有没有办法只通过一个文档来查询得到结果?
【问题讨论】: