Я пытаюсь сделать multi-join с предложением where, используя mongoose.Как мне правильно выполнить предложение where?
Я просмотрел документацию по народонаселению мангуста и другие ответы, но в результате моего текущего запроса возвращаются дополнительные документы.У меня работает экспресс-сервер узлов, и я использую Postman для достижения своей конечной точки.
Вот моя основная схема, которая имеет все внешние ключи.В Схеме Locker есть свойство с именем IsUsed (Boolean), которое я пытаюсь использовать для предложения where
const userLockerMapSchema = new Schema({
UserId: { type: Schema.Types.ObjectId, ref: "User" },
SchoolId: { type: Schema.Types.ObjectId, ref: "School" },
StationId: { type: Schema.Types.ObjectId, ref: "Station" },
LockerId: { type: Schema.Types.ObjectId, ref: "Locker" },
});
Чтобы присоединиться к этим коллекциям, я делаю следующий запрос:
UserLockerMap.find({
UserId: userId
})
.populate("SchoolId")
.populate("StationId")
.populate({
path: "LockerId",
match: {
IsUsed: true
}
})
Я бы хотел, чтобы запрос возвращал только список коллекций, в которых LockerId.IsUsed = true.Примерно так:
{
"_id": "5c39825a9d268184fe5",
"UserId": "5ca4oiuo23ua30ce528",
"SchoolId": {
"EmailDomain": [
"@tu1"
],
"_id": "5cd2nlkacf0d48e333",
"Name": "Test Uni 1",
"CreatedAt": "2019-05-07T00:01:16.506Z",
"__v": 0
},
"StationId": {
"_id": "5cdlaje93cf0d48e334",
"AtSchoolId": "5cd0cacc24ae93cf0d48e333",
"Name": "Test S1",
"CreatedAt": "2019-05-07T00:01:29.095Z",
"__v": 0
},
"LockerId": {
"_id": "5cd0caea24ae93cf0d48e337",
"StationId": "5cd0cad924ae93cf0d48e334",
"LockerName": "TL2",
"IsUsed": true,
"CreatedAt": "2019-05-07T00:01:46.784Z",
"__v": 0
},
"StartedAt": "2019-05-07T05:07:14.161Z",
"EndAt": "2019-05-07T05:12:14.161Z",
"__v": 0
}
Приведенный выше запрос фактически возвращает все коллекции, однако значение LockerId возвращается как ноль, где LockerId.IsUsed! = True.Т.е.
{
"_id": "97287e5b7cab8a0d173cbddb7",
"UserId": "5ca812232327a30ce528",
"SchoolId": {
"EmailDomain": [
"@tu1"
],
"_id": "9238ojjelkjlka33q",
"Name": "Test Uni 1",
"CreatedAt": "2019-05-07T00:01:16.506Z",
"__v": 0
},
"StationId": {
"_id": "5cd0cad924ae93cf0d48e334",
"AtSchoolId": "5cd0cacc24ae93cf0d48e333",
"Name": "Test S1",
"CreatedAt": "2019-05-07T00:01:29.095Z",
"__v": 0
},
"LockerId": null,
"StartedAt": "2019-05-07T01:56:07.829Z",
"EndAt": "2019-05-07T02:01:07.829Z",
"__v": 0
},
{
"_id": "5c39825a9d268184fe5",
"UserId": "5ca4oiuo23ua30ce528",
"SchoolId": {
"EmailDomain": [
"@tu1"
],
"_id": "5cd2nlkacf0d48e333",
"Name": "Test Uni 1",
"CreatedAt": "2019-05-07T00:01:16.506Z",
"__v": 0
},
"StationId": {
"_id": "5cdlaje93cf0d48e334",
"AtSchoolId": "5cd0cacc24ae93cf0d48e333",
"Name": "Test S1",
"CreatedAt": "2019-05-07T00:01:29.095Z",
"__v": 0
},
"LockerId": {
"_id": "5cd0caea24ae93cf0d48e337",
"StationId": "5cd0cad924ae93cf0d48e334",
"LockerName": "TL2",
"IsUsed": true,
"CreatedAt": "2019-05-07T00:01:46.784Z",
"__v": 0
},
"StartedAt": "2019-05-07T05:07:14.161Z",
"EndAt": "2019-05-07T05:12:14.161Z",
"__v": 0
}