Araik
cannot infer query fields to set, path 'priority' is matched twice
Daniil
cannot infer query fields to set, path 'priority' is matched twice
Не особо разбираюсь тут в синтаксисе, но первый элемент массива $and с $or можно переписать на assignee_id: { $in: [<array_of_ids>] }
Araik
Понимаю, что я где-то затупил, ищу где, там в запросе дубль
Daniil
а по производительности не знаете, быстрее будет?
Дока рекомендует делать также - https://docs.mongodb.com/manual/reference/operator/query/or/#or-versus-in
Araik
Понял, благодарю
Daniil
Понимаю, что я где-то затупил, ищу где, там в запросе дубль
Хорошо иметь возможность посмотреть в какой в итоге запрос превратился ваш код из драйвера, чтобы потестить его просто в монгошелле
Araik
вы знаете, работать с монго на пхп это то еще испытание, я до сих пор не знаю как это делается
Alex
Всем привет! Скажите, тормозит ли формирование выборки через aggregate, использование параметра allowDiskUsage?
Dmitriy
https://docs.mongodb.com/manual/tutorial/expire-data/#expire-documents-at-a-specific-clock-time как я понимаю как раз ваш кейс и управляйте со стороны приложения временем жизни
Гена
Коллеги, нужна ваша помощь. Мне нужно из одной коллекции заселектить данные по полю, а потом из этих документов вычленить _id и по этому _id в другой коллекции найти и удалить документы
Гена
Как мне это лучше сделать?
Dmitriy
двумя запросами
Гена
то есть одним запросов в переменную залить доки с значением id а потом по этой переменной искать в другой?
Dmitriy
то есть одним запросов в переменную залить доки с значением id а потом по этой переменной искать в другой?
зачем искать?) у вас получается следующий алгоритм: 1. запрос на выборку 2. формирования массива _id по результату полученному в п.1 3. запрос на удаление с условием {"field_name": {$in: [<тут массив из п.2>]}}
Гена
в пункте 2 будет список IDшников а потом этот список в запрос 3?
Гена
так там список может быть от 1к +
Гена
можно как-то вывод в переменную залить?
Dmitriy
вы можете это залить на вашем языке программирования? я могу на go, php, bash и скорее всего на с++ это сделать, но это отдельная история
Гена
я делаю это через монго shell то есть java
Гена
ну ок. спасибо за инфу
Dmitriy
я делаю это через монго shell то есть java
как я понимаю это единоразовая операция?) если я прав, то возьмите любое gui, сделайте выборку по п.1 через него и выгрузите результат в csv, а дальше откройте чем есть под рукой и просто скопируйте ваш хоть 100500+ id-шников
Гена
я через 3т и Компасс пытаюсь))
Гена
Пока только заселектить получается
Гена
но хотелось бы что-то оптимальное и не нагромождать код
Dmitriy
я через 3т и Компасс пытаюсь))
через студию или робо 3t? в студии есть экспорт в csv
Гена
Студия
Dmitriy
ну тогда я в принципе не вижу проблем сделать то, что я написал выше
Гена
ну я еще погуглирую, но в любом случае спасибо огромное)
Гена
ну тогда я в принципе не вижу проблем сделать то, что я написал выше
use db; db.getCollection("col").find( { "field" : { "$in" : [ 35.0, 32.0, 51.0, 5.0, 3.0, 18.0, 40.0, 28.0, 58.0, 52.0, 59.0, 93.0, 22.0, 49.0, 47.0, 143.0, 19.0, 48.0, 43.0, 114.0, 41.0, 27.0, 46.0, 119.0, 7.0, 67.0, 25.0, 34.0, 23.0 ] } ] } } ); Что добавить сюда, чтоб только id показывал?
Dmitriy
ничего, find всегда возвращает весь документ
Dmitriy
через aggregate сделайте
Гена
ок спасибо
Гена
а как через агрегацию?
Dmitriy
...aggregate([ {$match: {ваши условия}}, {$project: {"_id": "$_id"}} ]) примерно так
Гена
спасибо большое
Гена
у меня через аггрегацию получилось
Гена
...aggregate([ {$match: {ваши условия}}, {$project: {"_id": "$_id"}} ]) примерно так
а в аггрегацию же можно добавить удаление заселекченных документов?
Dmitriy
сделать remove через агрегацию?
Гена
вот из вашего примера вы селектим n-ое кол-ве документов, мы можем добавить в эту агграцию удаление?
Гена
чтоб мы одной командой и засселектили и удалили
Гена
а как быть? подскажите пожалуйста
Dmitriy
мне о такой функциональности не известно, может @dd_bb или @yatoba подскажут
Dmitriy
а как быть? подскажите пожалуйста
я же выше написал алгоритм, надо выполнить 3 пункта. пункт 1 у вас выполняется агрегацией
Гена
Хмм ну ладно спасисбо
Nick
но, если ваши данные позволяют можете добавить поел с флагом deleted и работать с фиктивно удаленными доками, помечая как удаленныые - и тут уже можно использовать агрегацию для апдейтов
Гена
Я супер нуб в этом деле. Простите что задаю глупые вопросы) спасибо за помощь)
Гена
Подскажите пожалуйста, а можно как-нибудь запарсить вывод запроса. Приведу пример - { "_id" : "fffeb5dd-1f65-4962-97b5-aa9b08f5a67f" } Мне нужны из вывода исключить { "_id" : и } то есть оставить только "fffeb5dd-1f65-4962-97b5-aa9b08f5a67f"
Гена
это возможно?
Гена
внутри монго шелла
Dmitriy
сделайте сверху на баше через grep, а в баш скрипте вызовите монгошел
yopp
Там что-то в духе map(f(currentItem) {currentItem[“_id”]}))
Гена
сделайте сверху на баше через grep, а в баш скрипте вызовите монгошел
ну это я могу сделать, но хотелось бы понять как это сделать в рамках одной сессии
Гена
Там что-то в духе map(f(currentItem) {currentItem[“_id”]}))
спасибо, подробнее уже погуглю
Josh
блин триггернулся на месаг
Гена
не понял)
Josh
думал может какой исходник закинули с обновой мощной, да тут реакции спасибоподро*ил
Ilya
ребят а чем заменить в монге 4.2 оператор eval
Ilya
я через него вызывал функцию самописную ранее, а как сейчас это провернуть?
Ilya
выполняла сложный серию сложных запросов и формировала ответ
Nick
выполняла сложный серию сложных запросов и формировала ответ
в код выносите, именно поэтому не нужно тащить бизнес логику в базу, чтобы потом не пришлось все выкорчевывать оттуда
Ilya
🙂
Ruslan
Можно ли сохранить в mongo данные без схемы?
Ruslan
Не используя mongoose, через mongoclient
Ruslan
Я имею ввиду использовать mongoose.Schema
Daniil
зачем?
Ruslan
Короче, чтобы сохранить в бд нужно делать схему - schema?
Daniil
Если вы используете mongoclient вам не нужен ни mongoose, ни его schema
Ruslan
Я использую mongoclient, но там же не будет проверки, правильно?
Artem
такой вопрос, есть коллекция с 200 миллионами сообщений, я подсчитываю для определенного пользователя количество исходящих сообщений. их там 80 миллионов, db.messages.find({ user_id: 7147280, bot_id: '35f41b59-77cd-409c-a863-04c4ba18a0e7', direction: 2 }).hint({ "user_id" : 1, "bot_id" : 1, "direction" : 1 }).count() как итог запрос выполняется более 1 минуты, запрос идет сугубо по индексу В чем может быть проблема