gpt4 book ai didi

node.js - 使用 Mongoose 查找文档,其中父级和子级都匹配查询

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:00 25 4
gpt4 key购买 nike

我有以下 2 个 MongoDB 的 Mongoose 模式:

// 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) {

这是正确的方法还是应该使用不同的技术?

最佳答案

在 MongoDB 中,不可能在单个查询中查询多个集合。如果 Child 作为子文档嵌入到 Parent 中,那么您可以对 child.status 进行查询,但由于它是在 Parent 中引用的单独集合,因此您无法执行此操作。

关于node.js - 使用 Mongoose 查找文档,其中父级和子级都匹配查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21901855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com