我正在对嵌套数组对象及其属性之一进行查找。但是结果为空。
这是我苦苦挣扎的文件。 https://jsonblob.com/78022829-0942-11ea-98b2-cbfc62bce9bf
我正在使用子对象“ externalAccounts”搜索该对象,其扩展名为106100668938302013942。
这是我的查询
let user = await UserProfile.findOne({'externalAccounts': {$elemMatch: {extId: id}}});
返回null。我也尝试了externalAccounts.extId的方法,但由于externalAccounts是一个数组,因此无法使用。有什么建议吗?
我的模式:
==
const UserProfileSchema = new Schema(
externalAccounts:[{
type: Schema.Types.ObjectId,
ref: 'ExternalAccount',
default: [],
}]
}
const ExternalAccountSchema = new Schema(
{
type: { type: String },
extId: { type: String },
token: {type: String,},
},
{ usePushEach: true,}
);
module.exports = Mongoose.model('ExternalAccount', ExternalAccountSchema);
答案 0 :(得分:-1)
我相信elemMatch不起作用,因为该数组包含一个单独的objectId / schema。它将需要一个汇总。
所以我删除了objectId并将其设置为一个字段数组,现在可以使用了。
externalAccounts:[{
type: { type: String },
extId: { type: String },
token: {type: String,},
}]