在mongodb中的文档内部的数组中获取具有特定值的文档

时间:2019-01-23 11:35:14

标签: mongodb mongoose

我的文档如下

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});

1 个答案:

答案 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 });