1
我有一個MongoDB的以下2種貓鼬模式:使用貓鼬查找文檔,其中父母和孩子都匹配查詢
// Parent Schema
var parentSchema = mongoose.Schema({
status: { type: String, required: true }
child: { type: mongoose.Schema.Types.ObjectId, ref: 'Child', required: true },
...
}
//Child schema
var childSchema = mongoose.Schema({
status: { type: String, required: true }
...
}
我希望尋找到狀態=出版,所有的父文件裏子文檔狀態=也出版了。以下任何一項都不能達到預期的效果:
//This returns no documents
Parent.find({ 'status': 'published' })
.where({ 'child.status': 'published' })
.populate('child')
.exec(function (err, results) {
//This returns no documents
Parent.find({ 'status': 'published' })
.populate('child')
.where({ 'child.status': 'published' })
.exec(function (err, results) {
//This filters by parent status but not child status
Parent.find({ status: 'published' })
.populate({
path: 'child',
match: { 'child.status': 'published' }
})
.exec(function (err, results) {
//This returns no documents
Parent.find(
{status: 'published', 'child.status': 'published'},
{child:{$elemMatch:{status: 'published'}}})
.exec(function (err, results) {
這是正確的方法還是應該使用不同的技術?