当你不知道文档Id时,可以使用mongoose的查询方法来查询子文档。具体步骤如下:
const mongoose = require('mongoose');
const childSchema = new mongoose.Schema({
// 子文档的字段定义
name: String,
age: Number,
// ...
});
const parentSchema = new mongoose.Schema({
// 父文档的字段定义
name: String,
children: [childSchema], // 子文档数组
// ...
});
const Parent = mongoose.model('Parent', parentSchema);
findOne
方法结合查询条件来查找符合条件的父文档,并使用点操作符来访问子文档字段。例如,如果你想查询名字为"John"的父文档,并获取其子文档的信息,可以这样做:Parent.findOne({ name: 'John' }, (err, parent) => {
if (err) {
console.error(err);
return;
}
// parent是找到的父文档对象
if (parent) {
// 访问子文档字段
console.log(parent.children);
} else {
console.log('未找到符合条件的父文档');
}
});
在上述代码中,findOne
方法接受一个查询条件对象作为参数,这里使用{ name: 'John' }
来指定查询条件。回调函数中的parent
参数是找到的父文档对象,你可以通过访问parent.children
来获取子文档的信息。
需要注意的是,上述代码只会返回符合条件的第一个父文档。如果你想查询所有符合条件的父文档,可以使用find
方法,并在回调函数中处理返回的父文档数组。
以上是使用mongoose查询子文档的基本步骤。如果你想了解更多关于mongoose的查询方法和其他功能,可以参考腾讯云的MongoDB产品文档:https://cloud.tencent.com/document/product/240/3569
领取专属 10元无门槛券
手把手带您无忧上云