Null
6.0.6 (May 12) ◦ 5.0.18 (May 18) • 4.4.22 (May 18) 🔥 Вышли версии 6.0.6, 5.0.18 и 4.4.22 ☠️ Прекращена поддержка ветки 4.2 • Документация • Официальный курсы: MongoDB University Stable: 6.0.6 (May 12) Bugfix: 5.0.18 (May 18) Legacy: 4.4.22 (May 18, ☠️ Feb '24) ☠️ 4.2.24 (Apr '23), 4.0.28 (Apr '22), 3.6.23 (Mar ’21), 3.4.24 (Jan ‘20) 🧑‍🔧 Консультации и поддержка MongoDB от 2190€ в месяц: @dd_bb
Глеб
Привет всем. Подскажите такой вопрос. Не могу добавить shard в mongos sh.addShard("shard1/mongodb-replica-1:27017") Ошибка вида: Could not find host matching read preference { mode: \"primary\" } for set shard1 telnet: telnet mongodb-replica-1 27017 Trying 10.0.1.13... Connected to mongodb-replica-1. Escape character is '^]'. rs.status() с первого шарда и единственной реплики: "set" : "shard1", "stateStr" : "PRIMARY", Что я делаю не так?
Глеб
А по адресам, которые указываешь, они доступны?
Указываю hostname, в моём случае это mongodb-replica-1 Отправил telnet до него от mongos, доступ есть по 27017, никакой авторизации вообще не настроено в данный момент. Не через пароль, не через серт/mongo-key-file Доступ к mongos не нужен как я понимаю, так я его забиндил (по дефолту 127.0.0.1) Ради интереса могу открыть доступ до mongos, но это я думаю ничего не изменит.
Глеб
Так же есть такие ошибки на стороне конфиг сервера: msg":"addShard request failed","attr":{"request":"AddShardRequest shard: shard1/mongodb-replica-1:27017","error":{"code":133,"codeName":"FailedToSatisfyReadPreference","errmsg":"Failed to refresh the balancer settings :: caused by :: Could not find host matching read preference { mode: \"nearest\" } for set config"}}} {"t":{"$date":"2023-06-27T12:03:30.938+00:00"},"s":"I", "c":"CONNPOOL", "id":22566, "ctx":"ReplicaSetMonitor-TaskExecutor","msg":"Ending connection due to bad connection status","attr":{"hostAndPort":"mongodb-replica-1:27017","error":"CallbackCanceled: Callback was canceled","numOpenConns":0}} UPD: Теперь другого вида ошибка на стороне mongos Failed to refresh the balancer settings :: caused by :: Could not find host matching read preference { mode: \"nearest\" } for set config
Alikhan
Приветствую! Использую бесплатную версию mongodb (500mb) с nestjs. Есть запрос GET который возвращает документы по сортировке, лимиту и скип. Всего 26 документов. MongoDB в первом запросе возвращает 20 документов, во втором запросе возвращает 1 документ, по логике должен вернуть 6. Подскажите в чем проблема?
Alikhan
Глеб
А какой статус у конфиг реплики? Там есть primary?
У каждого есть primary. Пока не пойму чего именно не хватает. Может со стороны самой реплики в /etc/hosts записи о конфиг сервере 🤔
yopp
Все участники репликасета должны иметь возможность подключиться к остальным участникам по хостам указанным в rs.config. То же самое касается mongos, он должен иметь возможность подключиться по именам хостов из конфигурации ко всем участникам шарда
Semyon V
Danila
В mongoDB можно сделать конструкцию updateIf ? т7е. обновить запись в случае, если выполнены условия (условия - запрос для той же коллекции)
Nick
В mongoDB можно сделать конструкцию updateIf ? т7е. обновить запись в случае, если выполнены условия (условия - запрос для той же коллекции)
да, по факту так и работает сам апдейт, вы указываете фильтр и если док подходит под условие то апдейт применяется. Дополнительно можно апдейт с агрегацией использовать и накрутить больше логики, если фильтра почемуто не хватает
Глеб
Ребята, подскажите у меня два config-serverа, один из них должен быть secondary или оба должны быть primary?
Глеб
Ааа, всё вижу, Андрей. Благодарю
Андрей
Всем привет! Подскажите плз как абортнуть транзакцию в withTransaction У меня так и чет не работает session.withTransaction((handle) => { ... if (true) { await handle.abortTransaction() } })
yopp
Всем привет! Подскажите плз как абортнуть транзакцию в withTransaction У меня так и чет не работает session.withTransaction((handle) => { ... if (true) { await handle.abortTransaction() } })
Здравствуйте! Транзакция прерывается через вызов метода на хендле сессии, а не самой транзакции : См. https://mongoosejs.com/docs/transactions.html#advanced-usage Самый нижний пример
yopp
там не используется withTransaction если я так сделаю то это будет вызов после commitTransaction
В вашем случае должно хватить замены handle.abortTransaction() на session.abortTransaction() внутри замыкания withTransaction(). Объект session уже определен и инициализирован в родительской области видимости, проблем с этом, насколько я знаю, быть не должно
Oleg
Всем привет! Подскажите плиз, правильно понимаю, что для incremental backup необходимо использовать --oplog?
SuperNatural
ребят может кто сталкивался в агрегированом запросе сортирую массив, но после применения lookup сортировка ломается и дает опять в разнобой, не подскажите как сохранить последовательность? { $set: { "github.stacks.languages": { $sortArray: { input: "$github.stacks.languages", sortBy: { "bytes": -1 } } } }}, { "$lookup": { "from": "languages", "localField": "github.stacks.languages.language", "foreignField": "_id", "as": "github.stacks.languages", } },
SuperNatural
это поле пропадает после "languages": [ { "language": {"$oid": "61473e465b1f92d4c5f40af5"}, "bytes": 379307336 }, { "language": {"$oid": "614740155b1f92d4c5f40afc"}, "bytes": 9411577 }, ]
SuperNatural
когда делаю лукап bytes затирает
SuperNatural
{ "$lookup": { "from": "languages", "localField": "github.stacks.languages.language", "foreignField": "_id", "as": "github.stacks.languages", } }
Nick
{ "$lookup": { "from": "languages", "localField": "github.stacks.languages.language", "foreignField": "_id", "as": "github.stacks.languages", } }
т.к. тут перезатирается весь массив исходный, то порядка исходных доков и не будет. Надо подтягивать в каждый док. проверьте с as: github.stacks.languages.language
SuperNatural
@yatoba просто создает новую вложеность, поле bytes затирается(
SuperNatural
"languages": { "language": [] }
Nick
"languages": { "language": [] }
понял, наконец что хочется. Вы хотите к каждому элементу массива подтянуть доп инфу - такое не провернуть. Вы только можете вытащить все связанные доки в массив рядом и потом при необходимости работат ьс этими двумя массивами. Порядок соответственно не сохранится
SuperNatural
@yatoba все верно, уже нашел статью описывающу мой кейс придется unwind делать https://dev.to/krishnabose02/mongodb-lookup-on-an-array-of-objects-which-contains-foreign-objectid-as-a-key-37b9 Спасибо за внимание!
Nick
@yatoba все верно, уже нашел статью описывающу мой кейс придется unwind делать https://dev.to/krishnabose02/mongodb-lookup-on-an-array-of-objects-which-contains-foreign-objectid-as-a-key-37b9 Спасибо за внимание!
но вы можете немного извратиться и через передачу параметра bytes добавить его как поле в доках в выдаче. И потом отсортировать по нему в примере https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#perform-a-concise-correlated-subquery-with--lookup ест ьвнутренний пайплайн, в него вместо $match добавьте $set или $addFields
SuperNatural
уже пытался через pipeline он создает массив со всеми значениеями которые находятся в массиве
SuperNatural
{ $lookup: { from: 'products', localField: 'products.productId', foreignField: '_id', as: 'productDetail' } }, { $addFields: { products: { $map:{ input:"$products", as:'product', in:{ $mergeObjects:[ '$$product', {product:{$arrayElemAt:['$productDetail',{$indexOfArray:['$products','$$product']}]}} ] } } } } }, { $unset:["productDetail"] }
SuperNatural
вот не плохой пример через map двух обьектов
MaxSMoke | Beware of SMoke
Приветствую. Пытаюсь запустить монгодб в докере из-за проблем с репозиторями в arch. Делаю всё по сайту docker.com и получаю ошибку 100 t={"$date":"2023-06-28T13:28:44.999+00:00"} s=I c=CONTROL id=23138 ctx=initandlisten msg=Shutting down attr={"exitCode":100} То-ли у них что-то не дописано в примере запуска, то-ли я дурак. Помогите пож.
Саня
нормально ли практикой является брать дату с objectId? Для агригации и т.д Или лучше создавать поле date в iso формате?
MaxSMoke | Beware of SMoke
предчувствую что это что-то банальное, но мне в 23:35(Вдк) просто уже не думается
MaxSMoke | Beware of SMoke
?
Easy Rider
зёма = земляк.
MaxSMoke | Beware of SMoke
а, приветствую
Nick
нормально ли практикой является брать дату с objectId? Для агригации и т.д Или лучше создавать поле date в iso формате?
конечно отдельное поле предподчительнее, его хотя бы глазами можно глянуть и сразу увидеть дату, а не бегат ьв конвертер юникстайма
Саня
конечно отдельное поле предподчительнее, его хотя бы глазами можно глянуть и сразу увидеть дату, а не бегат ьв конвертер юникстайма
А какие еще минусы есть? Ибо я не знаю как вот аргументировать команде, для них это не особо большой минус
MaxSMoke | Beware of SMoke
видимо exitcod'ы те, кто сейчас в сети не знают, не вовремя я
Nick
А какие еще минусы есть? Ибо я не знаю как вот аргументировать команде, для них это не особо большой минус
Если надо объяснять, то не надо объяснять. Если всех устраивает то используйте из ид, как наткнутся на проблемы, например надо изменить дату, то тогда сразу все поймут преимущества отдельного поля
MaxSMoke | Beware of SMoke
Похоже да, по докерам не подскажу
так по сути тот exitcode это самого Mongo
Nick
так по сути тот exitcode это самого Mongo
Тогда смотрите логи, там детальнее
MaxSMoke | Beware of SMoke
Тогда смотрите логи, там детальнее
я могу их хоть целиком скинуть, там куча мелких, несвязных ошибок
Андрей
$ python3 -m pip install -r etc/pip/compile-requirements.txt $ python3 buildscripts/scons.py DESTDIR=/opt/mongo install-mongod
MaxSMoke | Beware of SMoke
Помогаю. Имею арч на лэптопе давно. Так вот имея арч и имея какую-либо траблу с репом, собери сам эту несчастную монгу. 2 или 3 команды ведь 😏
У меня сервер на arch и ноут на manjaro. если буду собирать с aur на сервере (i5 2500, 5.9 GHz) то это будет всю ночь
Андрей
эм, чего блин?
https://github.com/mongodb/mongo/blob/master/docs/building.md
MaxSMoke | Beware of SMoke
Андрей
И никто не заметил подвоха :) Я самохост, фото моё
Заметил, но подумал - очепятка. Но то таке... По "судочкам" тут туториал есть. https://www.mongodb.com/compatibility/docker
MaxSMoke | Beware of SMoke
Заметил, но подумал - очепятка. Но то таке... По "судочкам" тут туториал есть. https://www.mongodb.com/compatibility/docker
Это баг линукса, как ни странно, мне все проги говорят 5.9, хотя по факту проц берет на 1 ядро 4.1, а на все 3.8-3.9
MaxSMoke | Beware of SMoke
сервер под кроватью?
нет, в колледже, на этой неделе диплом получил
Easy Rider
i5 2500, ЕМНИП, че-то около 3,3 в разгоне
MaxSMoke | Beware of SMoke
баги :)
MaxSMoke | Beware of SMoke
Это сервер, а на нем я ООЧЕНЬ много что делаю
MaxSMoke | Beware of SMoke
у меня рейд 01 на 1 тб забился :)
Андрей
Самому интересно сколько будет собираться, уже долго маслает компил 🤔. Там того бинарника весом с гулькин нос...
Андрей
еще и 20ж рамы сожрало 🤦
Сергей
Всем привет! У меня задача - настроить ODBC для монги на линуксе и написать понятную инструкцию про это. Две виртуалки. На одной поставил ODBC. На другой - монга 4.4.15 и bi-connector. Сейчас донастраиваю bi-connector. ODBC нужен для того, чтобы веб-сервисом тягать данные из монги. Вопрос: оно в принципе должно так работать? А то в чате увидел, что такое только для Enterprise-версий.
Easy Rider
напишы бота
Lukaš 🇨🇿
Ну в плане, я сейчас посмотрел как это работает, не понял в чем разница, какие там плюсы
Air
Создал text index по полю name в бд и по нему производится поиск. В бд теперь также есть поле category. Как найти name строго по category? const product = await collectionFull.aggregate ( [ { $match: { $text: { $search: name } } }, { $sort: { score: { $meta: "textScore" }, name: 1 } } ] )
Air
использую $and?