MongoDB Array Query
Пытаюсь сделать запрос для перебора массива JSON объектов с целью найти те, в которых либо isWinner - true, либо isFixLot - true. Одно из условий является то, что массив может быть вообще пустой. Можете помочь с созданием запроса? Последний раз когда пробовал получилось что-то вроде этого
where = { "bids": { $nin: [undefined, "", []] },
"bids": { $in: [{'isWinner': true}, {'isFixLot': true}] }
}
Но в итоге получаю ошибку
(node:70585) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'bids' of undefined
Пример входных данных
{ _id: 5f0c4daf77db5d2fb4cddbf9,
is:
{ updated: 2020-07-13T12:03:59.158Z,
created: 2020-10-07T10:03:59.158Z,
enabled: true },
isPaymentSet: true,
approved: false,
emails: [ '' ],
password:
'W',
surname: 'usr',
name: 'test',
__v: 1,
logins:
[],
settings: [],
bids:
[ { _id: 123,
currencyId: 'RUB',
userPaymentId: 123,
count: 1,
value: 1000,
userId: 123,
lotId: 123,
is: [Object],
isWinner: true,
isAnonymous: false,
isFixedLot: true,
__v: 0 } ] }
Ответы (1 шт):
Автор решения: DSka
→ Ссылка
@Yaant дал корректный ответ на вопрос
{$or : [{'bids.isWinner' : true}, {'bids.isFixLot' : true}]}
В данном случае даже если массив пустой не возникает проблем