节点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

回到顶部