Viktar
примерно так будет выглядеть файд на питоне через паймонгу
Danil
Блин, не получается, я вообще бота делаю и мне нужна рассылка, и я хочу брать айди, но не получается
Danil
Viktar
а конекшен к базе делаете?
Viktar
https://docs.mongodb.com/drivers/motor/
Danil
Viktar
collection.find({},{"_id":1})
Viktar
https://motor.readthedocs.io/en/stable/tutorial-asyncio.html
Danil
Viktar
_id в кавычках
Danil
Viktar
https://motor.readthedocs.io/en/stable/tutorial-asyncio.html#querying-for-more-than-one-document
Google
Всем привет можете помочь \ MongoDB : Как удалить старые документы из коллекции, старше 1 месяц
Kirill
find() возвращает асинхронный итератор, а не список:
async for user_id in collection.find(...):
print(user_id)
Вы мало с asyncio работали, да и с питоном вообще)
Sergey
Всем привет! Подскажите, пожалуйста, как грамотно через пайплайн агрегации добраться до объекта, если он в другом объекте, который в свою очередь в массиве массивов ?
Пример:
"arrays": [
[{
"field1": "some info1",
"object1": {
"field2": "some info2",
"field2": "some info3"
}
}
...
]
...
]
Из object1 хочу вытащить поля на уровень выше, т.е. чтобы получилось
[[{
"field1": "some info1",
"field2": "some info2",
"field2": "some info3"
},...], ...]
Может кто знает с чем поработать нужно?
Пробую комбинации $addFields + $map + $mergeObjects, но пока у меня выходит массив из одного объекта(
Anonymous
Привет, столкнулся с ограничениями монги на размер сохраняемой строки(пытаюсь конвертнуть урл в base64),
RangeError [ERR_OUT_OF_RANGE]: The value of "offset" is out of range. It must be >= 0 && <= 17825792. Received 17825794
Anonymous
как это фиксится?
Nick
как это фиксится?
разбиванием на чанки, либо выносом хранения в GridFS. В монге ограничение на один док в 16мб
Anonymous
Nick
Всем привет! Подскажите, пожалуйста, как грамотно через пайплайн агрегации добраться до объекта, если он в другом объекте, который в свою очередь в массиве массивов ?
Пример:
"arrays": [
[{
"field1": "some info1",
"object1": {
"field2": "some info2",
"field2": "some info3"
}
}
...
]
...
]
Из object1 хочу вытащить поля на уровень выше, т.е. чтобы получилось
[[{
"field1": "some info1",
"field2": "some info2",
"field2": "some info3"
},...], ...]
Может кто знает с чем поработать нужно?
Пробую комбинации $addFields + $map + $mergeObjects, но пока у меня выходит массив из одного объекта(
посмотрите на $unwind
Eva🇺🇦
Привет! У меня есть алгоритм для сортировки постов:
k = constant
t = timestampposted - timestampcurrent
x = #votes
y = { 1 if x>0; 0 if x=0; }
z ={ x if x>0; 1 if x=0; }
f(t, y, z) = log10(z) + y*t/k
И я хочу получить 20 из 100 постов, отсортированные следуя его логике.
Подскажите, пожалуйста, как правильно это сделать.
Как я думаю:
1. db.posts.aggregate() //используя $function оператор, передаем нашу функцию сортировки и нужные филды документа для сортировки (вопрос: как передать филды) -> возвращаем [_id поста и его score для сортировки]
2. дальше сортируем все полученные значения по score и получаем упорядоченный массив _id
3. делаем запрос к бд, чтобы получить полные документы со всеми полями
Eva🇺🇦
ещё думается о $sort и sort(), но пока не пойму, как правильно score постов посчитать. алсо использую монгус))
Nick
Eva🇺🇦
а как внутри агрегации правильно сделать? aggregate принимает функцию и аргументы. я так понимаю, это своего рода цикл, в который передается текущий документ, потому функция будет каждый раз принимать новые параметры (t,x) и мы не можем сохранять их в агрегации.
Nick
yopp
Eva🇺🇦
yopp
как и x
yopp
как следствие вы можете заранее просчитать log10(z)
Eva🇺🇦
просто на создании поста считать филду?) и агрегация тогда не нужна) спасибо!
yopp
да
yopp
потом сортировать по этому полю
Michail
Посдкажите можно ли удалить коммит через сам GIT HUB без консоли?
yopp
yopp
попробуйте найти способ как использовать сортировку по дате поста в этом случае
yopp
проблема с такими сложными запросами в том что они потребуют сканирования всех документов
yopp
по этому все веса лучше расчитывать в момент обновления документа и «ранжирование» делать путём сортировок
Eva🇺🇦
я думаю, в монгусе можно поле динамическое сделать. спасибо ещё раз
Oleg
Всем привет, существует ли бесплатная GUI где есть role manager?
Oleg
Anonymous
Как правильнее будет очищать бд от данных, которые не пришли в запросе?
Anonymous
есть такой, код заполнения, но категории могут менятся, и нужно убрать те которых нет в массивчике
Anonymous
@yatoba
Anonymous
есть ли какой-то метод !findOneAndDelete
Anonymous
нет, удалить категорию которой ннет в массиве
Anonymous
массив nomenclature.groups
Oleg
Anonymous
да
Anonymous
их не много
Anonymous
я пока удаляю все, и перезаписываю
madspectator
Я тут простеньку агрегацию вывода currentOp сделал и заметил одну штуку
$ run debug_ops
[27 / 0.43632] op=update, ns=tgscan.member, wait-lock=no, wait-flow=yes
[7 / 0.11367] op=update, ns=tgscan.user, wait-lock=no, wait-flow=yes
[4 / 0.06556] op=update, ns=tgscan.username, wait-lock=no, wait-flow=yes
[1 / 0.00036] op=command, ns=admin.$cmd.aggregate, wait-lock=no, wait-flow=no
Во время затупа, когда производительность updates/sec падает в десятки раз в currentOp висят операции со статусом waitingForFlowControl: true
madspectator
Это может быть причиной или индикацией причины? Я пока не прочитал ещё, что это такое.
madspectator
Суть проблемы, у меня в коллекции 1.3млрд. записей, делаю много update в секунду, несколько десятков тысяч, периодически оно начинает тупить и скорость update падает до сотен в секунду. Primary сервер мощный, а вот secondary (их несколько) слабее.
madspectator
$currentOp.waitingForFlowControl
A boolean that indicates if the operation had to wait becauseof flow control.
🤔
madspectator
https://docs.mongodb.com/manual/tutorial/troubleshoot-replica-sets/#flow-control
madspectator
Если я правильно понял, когда flow control включен, primary видит, что secondary не справляются и перестаёт принимать write запросы 😱
Mykola 🤷🏼♀️
Привет! Кто работал с оператором $sample, подскажите почему он супер медленный и как с этим возможно бороться
Mikhail
Всем привет можете подсказать почему при запуске сервера выдает ошибку ?
Mikhail
Mikhail
Mikhail
Mikhail
Mikhail
Anonymous
Anonymous
сделай allow от всюду(ну или от своего айпи)
madspectator
Mikhail
Это где ?
Mikhail
whitelist в настройках
Mikhail
сделай allow от всюду(ну или от своего айпи)
yopp
Вы можете увеличить flowControlTargetLagSeconds например до 120 секунд
madspectator
Flow control не буду отключать, только хуже сделаю. Буду обновлять железо для secondary ноды.
yopp
Если вы не используете :majority то проблем быть не должно
madspectator
Не, у меня парсер, он эту нагрузку создаёт постоянно, так что только upgrade secondary получается. Я ещё replWriterThreadCount увеличивал на secondary с 16 до 32 — не помогло. Хотя сейчас думаю, может быть, попробовать 64 или 128
yopp
Скорее всего у secondary нод не хватает пропускной способности хранилища