Araik
cannot infer query fields to set, path 'priority' is matched twice
Araik
Понимаю, что я где-то затупил, ищу где, там в запросе дубль
Araik
Araik
Понял, благодарю
Araik
вы знаете, работать с монго на пхп это то еще испытание, я до сих пор не знаю как это делается
Alex
Всем привет! Скажите, тормозит ли формирование выборки через aggregate, использование параметра allowDiskUsage?
Dmitriy
https://docs.mongodb.com/manual/tutorial/expire-data/#expire-documents-at-a-specific-clock-time как я понимаю как раз ваш кейс и управляйте со стороны приложения временем жизни
Гена
Коллеги, нужна ваша помощь.
Мне нужно из одной коллекции заселектить данные по полю, а потом из этих документов вычленить _id и по этому _id в другой коллекции найти и удалить документы
Гена
Как мне это лучше сделать?
Dmitriy
двумя запросами
Гена
то есть одним запросов в переменную залить доки с значением id а потом по этой переменной искать в другой?
Гена
в пункте 2 будет список IDшников а потом этот список в запрос 3?
Dmitriy
Гена
так там список может быть от 1к +
Гена
можно как-то вывод в переменную залить?
Dmitriy
вы можете это залить на вашем языке программирования? я могу на go, php, bash и скорее всего на с++ это сделать, но это отдельная история
Гена
я делаю это через монго shell то есть java
Гена
ну ок.
спасибо за инфу
Dmitriy
я делаю это через монго shell то есть java
как я понимаю это единоразовая операция?) если я прав, то возьмите любое gui, сделайте выборку по п.1 через него и выгрузите результат в csv, а дальше откройте чем есть под рукой и просто скопируйте ваш хоть 100500+ id-шников
Гена
я через 3т и Компасс пытаюсь))
Гена
Пока только заселектить получается
Гена
но хотелось бы что-то оптимальное и не нагромождать код
Гена
Студия
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"}}
])
примерно так
Гена
спасибо большое
yopp
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 показывал?
Вторым аргументом _id:1
Гена
у меня через аггрегацию получилось
Гена
Dmitriy
Dmitriy
сделать remove через агрегацию?
Гена
вот из вашего примера вы селектим n-ое кол-ве документов, мы можем добавить в эту агграцию удаление?
Гена
чтоб мы одной командой и засселектили и удалили
yopp
Гена
а как быть? подскажите пожалуйста
Dmitriy
мне о такой функциональности не известно, может @dd_bb или @yatoba подскажут
Nick
Гена
Хмм
ну ладно
спасисбо
Nick
но, если ваши данные позволяют можете добавить поел с флагом deleted и работать с фиктивно удаленными доками, помечая как удаленныые - и тут уже можно использовать агрегацию для апдейтов
Гена
Я супер нуб в этом деле. Простите что задаю глупые вопросы) спасибо за помощь)
Гена
Подскажите пожалуйста, а можно как-нибудь запарсить вывод запроса.
Приведу пример -
{ "_id" : "fffeb5dd-1f65-4962-97b5-aa9b08f5a67f" }
Мне нужны из вывода исключить { "_id" : и }
то есть оставить только
"fffeb5dd-1f65-4962-97b5-aa9b08f5a67f"
Гена
это возможно?
Гена
внутри монго шелла
Dmitriy
сделайте сверху на баше через grep, а в баш скрипте вызовите монгошел
yopp
Гена
yopp
Там что-то в духе map(f(currentItem) {currentItem[“_id”]}))
Гена
Josh
блин триггернулся на месаг
Гена
не понял)
Josh
думал может какой исходник закинули с обновой мощной, да тут реакции спасибоподро*ил
Ilya
ребят а чем заменить в монге 4.2 оператор eval
Ilya
я через него вызывал функцию самописную ранее, а как сейчас это провернуть?
Nick
Ilya
выполняла сложный серию сложных запросов и формировала ответ
Ilya
🙂
Ruslan
Можно ли сохранить в mongo данные без схемы?
Ruslan
Не используя mongoose, через mongoclient
Daniil
Ruslan
Я имею ввиду использовать mongoose.Schema
Daniil
зачем?
Ruslan
Короче, чтобы сохранить в бд нужно делать схему - schema?
Daniil
Если вы используете mongoclient вам не нужен ни mongoose, ни его schema
Ruslan
Я использую mongoclient, но там же не будет проверки, правильно?
Nick
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 минуты, запрос идет сугубо по индексу
В чем может быть проблема