Mongoose:在数组中search

我有这个模式:

new mongoose.Schema({ providers : [{ provider: { type: String, required: true }, data : { type : String, unique: true } }] }); 

例如,一个项目可以是:

 providers: [{provider: "linkedin", data: "abcd"}, {provider: "twitter", data: "efgh"}] 

我想在Mongoose中search:provider ==“linkedin”和data =“abcd”。

你知道如何做到这一点?

使用$elemMatch来匹配同一元素中的多个字段:

 Model.find({providers: {$elemMatch: {provider: 'linkedin', data: 'abcd'}}}) 

下面也会起作用,但是更脆弱,因为它需要元素的精确匹配,没有额外的字段和两个字段以相同的顺序。

 Model.find({providers: {provider: 'linkedin', data: 'abcd'}})