пн goose запрос, где идентификатор не в другой модели - PullRequest
0 голосов
/ 27 февраля 2020

так что у меня есть такая модель

const vetSchema = new mongoose.Schema({
    username: {type: String, required: true, trim: true, unique: true},
    email: {type: String, unique: true, trim: true,},
    expYear: {type: Number},
    KTP: {type: String, unique: true, trim: true},
    cert_id: {type: String, unique: true, trim: true, select: false},
})

const clinicSchema = new mongoose.Schema({
    vet: [{type: mongoose.Schema.Types.ObjectID, ref: 'vet'}],
)}

, что я хочу сделать, это найти ветеринара по имени пользователя, идентификатор которого не включен в clini c на основе clini c ID запрос на поиск ветеринара, например, {username: {$regex: (?i)${keyword}.*}}

, у нас есть эти данные

Clinic = [{
    "_id" : ObjectId("5e57a45836d300b188f4444a"),
    "vet": [ObjectId("5e0742fc9d4b20100f89b626"),ObjectId("5e53698fd2b9ee43e7693e01")]
}]

Vet = [
{
    "_id" : ObjectId("5e0742fc9d4b20100f89b626"),
    "username": "VetClinic"
},
{
    "_id" : ObjectId("5e55df62576bc9811877033e"),
    "username": "VetNotClinic"
},
{
    "_id" : ObjectId("5e53698fd2b9ee43e7693e01"),
    "username": "VetClinic"
},
]

, что я хочу, если я найду Vet, он показывает только VetNotClinic, потому что VetClinic включен в идентификатор клини c, есть хороший запрос / агрегат?

1 Ответ

0 голосов
/ 27 февраля 2020

вы можете использовать $nin для запроса, где поле находится не в массиве, как это

Vet.find({
username: {$regex: (?i)${keyword}.*},
_id: {$nin: clinic.vet}
})
...