Nick
как корректно сформировать запрос с $or внутри $end
у вас почемуто сильно вложенный запрос получился, после $or все условия должны быть на одном уровне (и что это за язык?)
Araik
тогда ругается, что $or должен быть массивом
Araik
Nick
ну у вас должно быть [0] => для первого статуса и потом [1]=> для второго
Araik
а блин, только увидел! спасибо, сейчас попробую
Nick
а что за язык такой дикой?
Araik
php ))
Nick
уфф
Araik
все заработало, спасибо еще раз))
Anton
Добрый день! подскажите, пожалуйста, что не так с запросом? db.orders.updateMany({ $and: [ { created: { $gte: new ISODate('2020-03-06T00:00:00.000Z') } }, { created: { $lte: new ISODate('2020-03-07T00:00:00.000Z') } } ] }, [ { $set: { 'payment.amount': { $ceil: '$payment.amount' } } } ]);
Anton
получаю ошибку Invalid BSON field name 0
Daniil
Почему второй аргумент массив? Должен быть объект
Anonymous
hi anyone know use mongodb?
Anonymous
places
Daniil
версия монги?
Алишер Абдуллаев
Фронтенд отправляет запрос - это таймстемп from_date & to_date. "from_date”: "2020-03-00T10:00:00.000Z", "to_date”: "2020-03-10T10:00:00.000Z” Есть документы в монгодб , с датой createdAt. Задача , нужно распределять документов по дням и посчитать сколько штук в день.
Алишер Абдуллаев
где можно сделать валидацию ? в $group _id не получается
Dmitriy
у вас стандартная задача на группировку по дням, примерно так реализующаяся (далее зависит от ваших нюансов): ...aggregate {$group: { _id : { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } }, "count": {$sum: 1} } ]) подробнее в документации по $group https://docs.mongodb.com/manual/reference/operator/aggregation/group/
Dmitriy
это группирует по дням, у вас в формулировке задачи про сортировку не было ничего сказано)
Алишер Абдуллаев
Алишер Абдуллаев
Алишер Абдуллаев
не получается по датам разделить
Dmitriy
что не получается?
Dmitriy
дата в каком формате хранится в базе?
Алишер Абдуллаев
ISODate
Алишер Абдуллаев
timesatamp
Dmitriy
так и что не получается то? ошибка на выходе или что?
Dmitriy
честно в угадайку нет ни какой возможности играть, если вы хотите помощи давайте уже как-то диалог строить
Алишер Абдуллаев
простите , фиксил баг
Алишер Абдуллаев
Dmitriy
пока я вижу стрингу, а не ISODate
Boris
Всем привет!
Boris
Есть 2 коллекции, в обоих необходимо произвести поиск по определнному параметру, и вернуть ту, в которой поиск дал положительнй результат, как можно такое реализовать?
Tsikhan
Добрый день! подскажите пожалуйста как сделать mongodump исключив определенную базу. В доках нашел только как исключить коллекцию.
yopp
А, две коллекции.
Nick
Есть 2 коллекции, в обоих необходимо произвести поиск по определнному параметру, и вернуть ту, в которой поиск дал положительнй результат, как можно такое реализовать?
если прямо дико сильно надо и хочется извращений, то создаете пустую коллекцию, делаете пайплайн такого вида: ag from emptyCol([ $group: _id: your_id, $lookup: col1 on param == _id to col1Path, $lookup: col2 on param == _id to col2Path, )] в результате у вас будет по наличию одного из путей понятно где был найден элемент
Илья
const mailsForNotifications = await this.userRepository.find({ isEmailNotifications: true, roles: 'CASE_MANAGER', }) У меня запрос так проходит в робо, а из ide пишет ошибку, что тип не совпадает, там enum. export enum Roles { PROVIDER, CASE_MANAGER, ADMIN, } @Column() roles: Roles[]; roles: Roles.CASE_MANAGER, Писал вот так, тоже не прошло, втф? Type 'Roles.CASE_MANAGER' is not assignable to type 'any[] | FindOperator<any[]>'.
Илья
Nest.js typescript, typeorm
Nick
тепрь больше шансов что ктото ответит
Anonymous
Ребят привет. Подскажите плиз Есть документ в котором содержится поля about и в нем содержится массив ["bmw","cars"]; или ["cars","bmw"]; Мне нужно найти именно ["bmw","cars"], elemMatch делает поиск, но мне нужно по порядку иначе он найдет два документа
Ilya
а если просто без elemMatch сделать что то типа: db.collection.find("about": ["bmw","cars"])
Ilya
он же вроде не должен найти ["cars","bmw"]
Anonymous
а какой в этом смысл сам по себе? почему порядок важен?
извиняясь. я видно не так передал смысл one = [ { name:"cars" }, { name:"bmw" }, { name:"..." } ]; two = [ { name:"bmw" }, { name:"cars" }, { name:"..." } ]; Вопрос такой же
Anonymous
собственной мой вопрос тоже такой же, в чем реальная необходимость соблюдения порядка элементов?
необходимость что будет два документа и надуться они оба хотя мне надо именно чтоб был порядок. Я так делаю структуру каталога.
Nick
необходимость что будет два документа и надуться они оба хотя мне надо именно чтоб был порядок. Я так делаю структуру каталога.
такие проблемы не должны возникать при работе с каталогами, похоже вы неправильно чтото делаете. Я правильно понимаю что в массиве у вас категории которые показываются пользователю в этом порядке?
Nick
и вам нужно по всему массиву так искать совпадения на случайных местах или всегда только по первым двум?
Nick
я понимаю но мне нужен просто ответ. а делать рекомендации уже не помогут т.к. уже 2 недели занималься этим вопросом
это как раз изза того что вы решаете не ту проблему - вам нужно перепройтись по бизнес требованиям и перестроить структуру данных. но если уж хотите просто ответ то - делаете выборку как и сейчас, но фильтруете в коде
Nick
ничего подходящего в монге чтото не нашлось, все необходимые операции над массивами доступны только в агрегациях, а в поиске - увы
Dmitriy
Добрый день, может подскажите куда копать. Есть standalone монга 3.2.22 на сервере с Ubuntu, путь к базам /var/lib/mongodb . Попробовал перезапустить ее как реплика сет добавив replication.replSetName: rs0 в /etc/mongod.conf - но перестали видится старые коллекции (базы видны, но в них нет ни одной коллекции). Если убрать из конфига replication.replSetName: rs0 - то снова нормально стартует в standalone При этом такие же манипуляции на тестовой конфигурации привели к корректному рестарту и все коллекции были видны. Из различий конфигов пока раскопал только, что на тесте нет параметра storage.directoryPerDB: true, но в гугле ничего про влияние этого параметра не нашел и сами базы сет увидел
Araik
Подскажите пжл, как правильно работать с датой? Вот у меня есть поле с датой, делаю выборку, но не все документы попадают в выборку, хотя дата в нужном диапазоне
Araik
так выглядит документ в коллекции, который не удается вытащить с помощью запроса
Araik
Dmitry
'timestamp': { $gte: ISODate('2019-06-25T10:00:00'), $lte: ISODate('2019-06-25T11:00:00') }
Araik
это я понимаю, сам запрос работает
Araik
но вытаскивает не все документы
Dmitriy
традиционно, что в $end и $start переменных? дайте var_dump
Araik
object(MongoDB\BSON\UTCDateTime)#6 (1) { ["milliseconds"]=> string(13) "1584478800000" }
Araik
это переменная $start
Araik
object(MongoDB\BSON\UTCDateTime)#5 (1) { ["milliseconds"]=> string(13) "1584565200000" }
Araik
а это $end
Araik
перевожу с помощью онлайн конвертера из UNIX Timestamp в нормальную дату, для $start это GMT: Tue, 17 Mar 2020 21:00:00 GMT Ваша временная зона: 18.03.2020, 00:00:00 Для $end: GMT: Wed, 18 Mar 2020 21:00:00 GMT Ваша временная зона: 19.03.2020, 00:00:00
Araik
Документ который не удается вытащить : 2020-03-18T05:30:10.000+00:00
Dmitriy
ок, давайте тогда по другому посмотрим. у вас есть админские права к базе?
Araik
При этом, если делать запрос в Mongo Atlas, то все ок {'updated_at':{'$gte':ISODate('2020-03-18')}, 'status':'solved'}
Araik
да
Araik
мне кажется какая-то со временем непосредственно проблема может?
Araik
щас покажу как конвертирую время для запроса
Araik
$filter['start'] = strtotime($_GET['start'])*1000;