Mongo嵌套查找数组未拾取对象

时间:2019-11-18 01:08:00

标签: mongodb mongoose

我正在对嵌套数组对象及其属性之一进行查找。但是结果为空。

这是我苦苦挣扎的文件。 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);

1 个答案:

答案 0 :(得分:-1)

我相信elemMatch不起作用,因为该数组包含一个单独的objectId / schema。它将需要一个汇总。

所以我删除了objectId并将其设置为一个字段数组,现在可以使用了。

  externalAccounts:[{
          type: { type: String },
          extId: { type: String },
          token: {type: String,},
        }]