Gleb
то есть, чтоб проверяло, есть ли такое значение в массиве
Gleb
Решил. Называется $addToSet, если кому нужно
Gleb
Кто работает с монгой на ноде. Библиотека, понятное дело, mongoose. Что я не понимаю в асинхронности и async/await ? try { const beforeUpdate = await Site.find() // value1 data.forEach(el => { await Site.updateMany(...) // SET TO VALUE2 }) const afterUpdate = await Site.find() // value 1 } catch (err) { }
Gleb
при этом, в БД всё правильно отправляется
Gleb
но почему тогда возвращается в await раньше времени, если результат еще старый
Gleb
получается так, что когда после всех запросов возвращаешь data, на фронт уходят данные до обновления
Nick
Не за етно что увас хоть както меняется data. Хотите новые данные возвращайте afterUpadate
Anonymous
но почему тогда возвращается в await раньше времени, если результат еще старый
.map используй с Promise.all или for, если нужно последовательно все отправить
Gleb
Уже понял, что for each синхронно продолжает работать
Daniil
.map используй с Promise.all или for, если нужно последовательно все отправить
Только это запускает запросы параллельно, что в случае если они довольно жирные может привести к тормозам. Асинхронно последовательно можно перебрать через reduce
komron️
Есть видеоуроки, может в виде торрентов, для монгодб+питон? На английском желательно, но на русском тоже сойдет
Ivan
по 127,0,0,1 с хост-машины?
Anonymous
Так работает -p в docker run - он высовывает порт наружу. https://stackoverflow.com/questions/30383845/what-is-the-best-practice-of-docker-ufw-under-ubuntu Возможно это решит проблему, если я её вообще правильно понял
komron️
Тут такая тема; я использую mongoengine. Кто-нибудь может объяснить разницу между: EmbeddedDocumentListField vs EmbeddedDocumentList vs EmbeddedDocumentField?
Edouard
Привет, чат. Вопрос: возможно ли разбить дамп базы, выполненный через mongodump, на 5-10-100 частей. Спасибо.
Daniil
ну на коллекции можно разбить
Anonymous
Ну я ровно про это вам стэк и кинул)
Anonymous
Это не к монге вопрос, в общем, наверное не для этого чата
Edouard
для какой цели?
Скормить в hadoop и вот hadoop.splitter.BSONSplitter нет под рукой.
Nick
Скормить в hadoop и вот hadoop.splitter.BSONSplitter нет под рукой.
https://docs.mongodb.com/manual/reference/program/mongoexport/
Nick
можете указать запрос на выборку, а так же явно какие поля вытаскивать
Edouard
Спасибо, так и делаю) Собственно, уже выполненный mongoexport в виде bson на куски, видимо, не пилится
Dima
всем привет, подскажите, в чем может быть проблема в базе монго лежит обьект, на выходе получаю массив, использую doctrine mongo bundle
Dima
Dima
Dima
окей, не могу найти как в монгу сохранить php обьект вот такого вида, какой должен быть тип поля?
Dima
можно ли сохранить именно php обьект? assoc array не подходит
Nick
в монге нет php объектов, так что вам хотите вы или нет нужно преобразовать в подходящий монге формат. в общем случае за это отвечает драйвер или всякие фреймворки, поэтому штурмуйте доки того через что работает с монгой
Dima
то есть я верно понял максимум что это будет это assoc array, верно?
Dima
то есть тот же обьект в монге в пыхе это будет ассоциативный массив и в этом проблема?
Nick
я в пхп не понимаю
Dima
Ладно, в любом случае спасибо за наводку
Nick
создавайте стрктуру так чтобы из нее мог получитсья json без необходимости извращаться и тогда наверняка не будете иметь проблем
Viktor
Всем привет, подскажите, если три монги в репликасет, и трафик идёт только на 1ну, то та что получает трафик, если она не примари будет переправлять запросы на примари?
yopp
Если запрос на запись будет направлен на secondary то клиент получит ошибку в ответ. При изменении топологии клиенты обязаны обновить своё представление кластера и подключится к новому праймари
p
Всем привет! Можно как-то добавить документ не в коллекцию а после конкретного документа?
p
Нет. В монге нет «порядка» как такового.
а то что документы возвращаются в порядке, в котором были добавлены?
yopp
Этот порядок не гарантируется
p
понял, спасибо
Igor
Ребят, использую kmongo. Почему-то если убрать одно из условий в find, то возвращается 0 результатов. Как такое может быть, они же оба eq и по умолчанию там подставляется and если больше одного условия. data class Model(val stringProp: String, var longProp: Long) fun test(collection: MongoCollection<Model>) { collection .find(Model::longProp eq 0, Model::stringProp eq "FOO") .count() // Не ноль collection .find(Model::stringProp eq "FOO") .count() // 0
Andrey
ребят помогите плиз, такой запрос не работает, полагаю из-за if: { "$$this.v" } db.getCollection('clubs').aggregate([ { $project:{ staff:{ $reduce: { input: { $objectToArray: "$staff" }, initialValue: [], in: { $concatArrays: [ "$$value", { $cond: { if: { "$$this.v": { $in: ["demo"]}}, then: [], else: ["$$this.k"] } } ]} } } } } ])
Andrey
суть такая, что есть документы, у которых есть объект staff который может в ключах ролей содержать логины, я для одного логина пытаюсь выбрать документы-роли
Andrey
не получается составить условия для reduce вида, если this.v содержит элемент, то в аккум добавить this.k
Denis
ребят, я правильно понимаю что find({someField: 'test'}) с limit+skip будет искать по запросу по всей коллекции, но возвращать json в соответствии с limit+skip ?
Denis
или искать будет только в пределах limit+skip?
Denis
правильно
спасибо👍
Александр
привет, а правильно в mongoDB _id свои назначать? Там у них какой-то ObjectId("dsgdfgdsfgfgfggf") если автоматом генериться А если свой назначать то строка созадется
Александр
Александр
индексы не поломаются с customId?
yopp
Если на это нет очень веской причины, то не стоит. Но в целом ничего не сломается. Единственное что до 4.0 размер индексируемого значения ограничен 1024 байтами
Александр
а есть возможность сделать unique поле?
Roman
привет ребяты! у меня софт на ноде я тут слезаю с форка на кластер, так как процесс стал жрать 100% ядра. у меня в цикле берутся данные из БД - задания. когда я беру задание из БД я следующим запросом помечаю задание как "запущенное и взятое". но когда я форкаю процесс в кластере, я боюсь, что форки возьмут одно и то же задание, а мне оно не надо
Denis
в цикле берутся данные из БД почему берутся в цикле а не 1 запросом?
Roman
чтобы распределять по форкам
Roman
иначе все улетит в 1 форк
Roman
умно наверное будет апдейтить 1 документ сразу же
Roman
и смотреть заапдейтилось что либо или нет
Roman
тогда такой проблемы не будет
yopp
а есть возможность сделать unique поле?
Да. Создать индекс с флагом uniq
Igor
ребят, может кто подсказать, раньше схема была из двух полей: email: { type: String, required: true }, password: { type: String, required: true, select: false }, и при регистрации пользователя, с таким же email вываливалась ошибка «duplicate key error»… сейчас модель вот такая: const UserModel = new Schema({ createdAt: { type: Date, default: Date.now }, email: { type: String, required: true, unique: true }, password: { type: String, required: true, select: false }, id: { type: Number }, active: { type: Boolean, default: false }, validateHash: { type: String, required: true } }); UserModel.index({ "createdAt": 2 }, { expireAfterSeconds: 60 * 60 * 24, partialFilterExpression: { active: false } }); ошибка перестала вываливаться… пробовал добавить флаг unique: true для email - не помогло, с чем может быть связано?
Igor
сорри за формат, чет телеграмм не дает норм отредактировать сообщение
Igor
я так понимаю, связано с индексами, но идея пока что не понятна
Anonymous
У вас точно индекс накатился? Кажется я видел похожее, когда индекс не катился сам при его добавлении в схему
Igor
блин, точно, опять похожая проблема… спасибо и сорри за типичные вопросы 🙏
Nick
https://youtu.be/j6TVaEk4x2U
Anonymous
Есть руководство по выживанию под его взглядом?
yopp
https://youtu.be/j6TVaEk4x2U
ахахах. первый вопрос кажется от @k0tb9g9m0t
Aleksandr
?????
yopp
?????
https://youtu.be/j6TVaEk4x2U?t=2154
Aleksandr
да это я
AstraSerg
https://youtu.be/j6TVaEk4x2U
Спасибо, дельно
yopp
как похудеть