我的文档如下
const mailSchema = new Schema ({
from: String,
to: [{
emailId: String,
status: Number
}],
cc: [{
emailId: String,
status: Number
}],
bcc: [{
emailId: String,
status: Number
}],
subject: String,
content: String,
status: Number,
createdBy: Schema.Types.ObjectId
}
如何检索“ to.emailid”包含给定值的文档?
我使用了下面的代码,但是它不起作用。
const emailtext ='test@gmail.com' MailSchema.find({'to.emailId':emailtext});
答案 0 :(得分:0)
我认为您的架构不正确。您要做的就是拥有一个包含目标文件的文档。但是您所做的是一个包含文件对象数组的文档。所以我认为您应该删除架构中的所有方括号,然后看起来应该像这样。
//Mail Schema without array of objects.
const mailSchema = new Schema ({
from: String,
to: {
emailId: String,
status: Number
},
cc: {
emailId: String,
status: Number
},
bcc: {
emailId: String,
status: Number
},
subject: String,
content: String,
status: Number,
createdBy: Schema.Types.ObjectId
}
但是,如果您真正想要的是对象数组,则查询中还应包含您要从中获取emailId的数组的索引。 例子。
MailSchema.find({'to[0].emailId': emailtext });