Rag*_*ngh 4 mongoose mongodb node.js
我有这样的架构
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TeacherSchema = new Schema({
education: [{degree: String, instituteName: String}],
dob: Date,
photoUrl: String,
phoneNumber: String,
institutes: [{type: mongoose.Schema.ObjectId, ref: 'Institute'}],
subjects: [{
name: String,
topics: [{
name: String,
modules: [{
name: String,
classes: [{
name: String,
startTime: Date,
endTime: Date,
fee: Number
}]
}]
}]
}],
created: {type: Date, default: Date.now}
})
module.exports = mongoose.model('Teacher', TeacherSchema);
Run Code Online (Sandbox Code Playgroud)
我的问题是如何查询嵌套数组?具体来说,我想查找所有至少有一个科目/主题/模块/课程的老师,其名称以“ Math”开头。我怎么能用猫鼬呢?
小智 6
看看是否可行...
db.Teacher.find({$or:
[{'subjects':{"$elemMatch":{'name':'Math'}}},
{'subjects.topics':{"$elemMatch":{'name':'Math'}}},
{'subjects.topics.modules.classes':{"$elemMatch":{'name':'Math'}}}]
})
Run Code Online (Sandbox Code Playgroud)
但是,我很好奇,为什么当所有包含的都是类数组时为什么需要模块数组?
假设您要使用通配符“ ath”进行搜索
db.stack30173606.find({$or: [
{'subjects':{"$elemMatch":{'name':'Math'}}},
{'subjects.topics':{"$elemMatch":{'name':'math'}}},
{'subjects.topics.modules':{"$elemMatch":{'name':'Math'}}},
{'subjects.topics.modules.classes.name':{"$in":[/math/]}}
] })
Run Code Online (Sandbox Code Playgroud)
对于不区分大小写的内容,请检查以下内容:如何在Mongodb上进行不区分大小写的查询?
| 归档时间: |
|
| 查看次数: |
6013 次 |
| 最近记录: |