节点js mongoose通过深层嵌套文档查找
在Node js mongoose中需要搜索以下模式级别的文章描述。猫鼬怎么可能呢? 我曾尝试使用$ elemMatch和它不工作。模式级别如下。节点js mongoose通过深层嵌套文档查找
var articleSchema = new Schema({ name: { type: String, required: true },
displayName: { type: String },
description: { type: String },
});
mongoose.model('Article', articleSchema);
var subChapterSchema = new Schema({
name: {type: String, required: true},
displayName: {type: String},
Articles:[articleSchema],
});
mongoose.model('SubChapter', subChapterSchema);
var chapterSchema = new Schema({
name: {type: String, required: true },
displayName: {type: String },
subChapters: [subChapterSchema],
});
mongoose.model('Chapter', chapterSchema);
var agreementSchema = new Schema({
name: {type: String, required: true },
displayName: {type: String },
Chapters: [chapterSchema],
});
mongoose.model('Agreement', agreementSchema);
我已经尝试如下,但它不工作。
var regex = new RegExp(text, "i"); var criteria = {
Chapters.subChapters.Articles : {
$elemMatch: {
description:regex
}
}
}
Agreement.find({criteria},'name displayName',function(err,docs){
if (err)
console.log('error occured in the database');
console.log(docs);
});
回答:
您可以$regex
和$options
尝试。
当你的条件是一个对象时,无需使用{criteria}
找到只需使用find(criteria
。 如果您的agreementSchema
中的subChapters:[chapterSchema]
然后在我的示例中使用subChapters.subChapters.Articles.description:
使用chapters.subChapters.Articles.description:
。
,并希望找到嵌套场
var text = 'search text'; var criteria = {
"chapters.subChapters.Articles.description": { $regex: text, $options: 'i' }
};
Agreement.find(criteria, 'name displayName', function (err, docs) {
if (err)
console.log('error occured in the database');
console.log(docs);
});
以上是 节点js mongoose通过深层嵌套文档查找 的全部内容, 来源链接: utcz.com/qa/265272.html