mongodb 数组中有多个对象属性的Mongoose Where

xa9qqrwz  于 2022-12-29  发布在  Go
关注(0)|答案(1)|浏览(108)

我是Node和MongoDb的新手。我正在为一家公司使用Mongoose模型,该公司具有以下特性:

industryIdentifiers: [
        {
            type: {type: String},
            identifier: {type: String}
        }
    ],

我想确保我没有将带有重复标识符的同一家公司添加到我的数据库中。因此,如果我有一个带有industryIdentifiers数组的传入Company对象,我想转到数据库,并查找是否有任何其他Company在其industryIdentifiers数组中具有重复对象。如果是,则停止创建新Company。
例如:

CompanyToCreate.industryIdentifiers = [
 { type: GICS, identifier: 23423 }
 { type: CUSIP, identifier: 24525C }
]

现在 Mongoose 会:Company. FindOne(其中任何Company. industryIdentifiers ==到任何一个要创建的公司. industryIdentifiers)...?

gmxoilav

gmxoilav1#

您可以将接收到的industryIdentifiers数组map到其identifier属性,然后使用$in操作符检查是否已经存在具有相同idCompany

const industryIdentifiers = [].map(id => id.identifier); // [] refers to the `industryIdentifiers` array received
const alreadyExist = await Company.find({
    'industryIdentifiers.identifier': { $in: industryIdentifiers } 
})
if (alreadyExist) {
    // Don't insert new company
}

相关问题