yopp
что очень хорошо
yopp
Да, отдаст
yopp
Иначе запрос никогда не выполнится :)
AstraSerg
Иначе запрос никогда не выполнится :)
Ну есть вариант, что будет ждать пока отставание будет 0 или около.
AstraSerg
Да, отдаст
Но тогда вопрошающий должен знать время, на которое нужно взять данные...
AstraSerg
В худшем случае — никогда не будет
Согласен. Можно конечно максимальное время ожидания, но это уже хрень непонятная будет.
yopp
Но тогда вопрошающий должен знать время, на которое нужно взять данные...
Да, для этого во все команды добавили clusterTime. В видео это хоть и очень сумбурно рассказывают, но его стоит посмотреть
Dmitry
Ребят, а может кто заделиться линком на гитхаб с готовым любым проектом на: react/redux/express/mongoose/mongodb?
Dmitry
Что, ни у кого из этой группы нет готового проекта?
Vova
Только на С# есть)
Constantin
Ребят, а может кто заделиться линком на гитхаб с готовым любым проектом на: react/redux/express/mongoose/mongodb?
Вы зря ищете скоповый проект. Приложению на react должно быть все равно, mongoose + mongodb у вас там, или просто нативный драйвер mongodb, или sequelize с mysql, или micro, или koa, или вообще не nodejs. Это разные слои. Ну и всегда есть гугл или яндекс. Вот первая ссылка из поиска https://github.com/Bikranshu/express-mongo-react-redux
Виктор
Привет. Нарпример, есть следующая структура. Как можно обновить map.0.list.1.name, когда известны только id этих объектов? { name: hello map: [ { id: 1, list: [ { id: 1, name: x }, { id: 2, name: y }, { id: 3, name: z } ] }, { id: 2, list: [ { id: 10, name: a }, { id: 11, name: b }, { id: 12, name: c } ] } ] }
AstraSerg
Привет. Нарпример, есть следующая структура. Как можно обновить map.0.list.1.name, когда известны только id этих объектов? { name: hello map: [ { id: 1, list: [ { id: 1, name: x }, { id: 2, name: y }, { id: 3, name: z } ] }, { id: 2, list: [ { id: 10, name: a }, { id: 11, name: b }, { id: 12, name: c } ] } ] }
добрый день, можно использовать фильтр через dot-нотацию. То есть: {'map.id': 1} он проверит все объекты в списке Вот здесь почитать можно UPD: кавычки обязательны
Виктор
добрый день, можно использовать фильтр через dot-нотацию. То есть: {'map.id': 1} он проверит все объекты в списке Вот здесь почитать можно UPD: кавычки обязательны
спасибо за ответ, но доконца не понял вашу мысль. map.0.list.1.name == 'y' - как обновить это значение? реально ли это сделать одним запросом?
Виктор
извините, отвлекли, ща поясню
нашел пока такое решение https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/#update-nested-arrays-in-conjunction-with
AstraSerg
попробуйте так: db.coll.update({'map.list.name': 'y'}, {$set: {....}})
Mikhail
всем привет! подскажите с таким вопросом как нужно работать с позицией документа в коллекции? на данный момент у каждого документа я задаю поле Position. Документы рендерятся в приложении в последовательности исходя из Position. Но если нуеобходимо изменить позицию документа или удалить документ, то помимо самого действия с документом требуется еще изменить и Position других документов (изменить Position соседних или уменьшить на 1 позицию всех последующих документов соответственно). Сейчас я вхялся переписывать весь проект и задался вопросом: возможно предусмотрены какие-то встроенные средства для этого всего? Беглый гуглинг никаких результатов не дал
Виктор
попробуйте так: db.coll.update({'map.list.name': 'y'}, {$set: {....}})
так не получается. сделал так db.coll.update( {'map.list.id': 2}, {'$set': {'map.$[].list.$[list_item].name': 'z'}}, {arrayFilters: [{'list_item.id': 2}]} ) 🤓 но все равно спасибо
Bro
"pymongo.errors.ServerSelectionTimeoutError: mongo1:27017: [Errno 24] Too many open files" никто с таким не сталкивался?
Bro
oh thank you
Mikhail
Нет, вам необходимо самостоятельно обновлять значения position.
и соответственно иметь поле position тоже необходимо?
yopp
да
Mikhail
Если документов не так много, вы можете попробовать собрать их массив поддокументов и дальше использовать $position
про это прочитал, но изменение позиции документов так реализовать будет невозможно
Mikhail
спасибо!
yopp
у документа нет позиции в коллекции
Mikhail
подскажите еще такой вопрос: как можно изменить поле с помощью $set, если заранее название поля неизвестно, но передается в функцию аргументов ?
Mikhail
Categories.update({ _id: id }, { $set: { field: value, }, }); то есть тут нужно изменить не поле field, а поле с названием из переменной field
Mikhail
судя по всему вот так: const setObject = {}; setObject[field] = value; Categories.update({ _id: id }, { $set: setObject, });
AstraSerg
судя по всему вот так: const setObject = {}; setObject[field] = value; Categories.update({ _id: id }, { $set: setObject, });
Да, можно так, но нетипичная зада,а какая-то. Архитектуру не хотите сменить?
Mikhail
Да, можно так, но нетипичная зада,а какая-то. Архитектуру не хотите сменить?
А какой ещё выход, если нужно написать методы для изменения каждого поля (name, desc, path, color, size, owner)? Писать по методу на каждое поле это получается большое количество однотипных методов
Mikhail
При большом количестве полей и бд имеем много ненужной рутинной работы
AstraSerg
А какой ещё выход, если нужно написать методы для изменения каждого поля (name, desc, path, color, size, owner)? Писать по методу на каждое поле это получается большое количество однотипных методов
Про методы не скажу, про вашу архитектуру мне ничего не известно. Но менять назания полей - нетипичично. Можно же сделать название нейтральное и менять валью.
Constantin
Ребят, всем привет! А что за ересь, mongoose ругается в последней версии на: findAndModify, remove, update — что методы deprecated, и будт удалены. Есть предпосылки со стороны MongoDB?
Constantin
Ну ещё не правильно
Constantin
Монгус раньше времени панику поднял. Пока в драйвере официальном не сделали все изменения. Как сделают да, все будет как по новой спеке, и старые методы отомрут
Constantin
Так ы итоге как у вас в js правильно теперь?
updateOne и updateMany, например, вместо update deleteOne и deleteMany вместо remove
Constantin
И как я понял подобные изменения произойдут и в других драйверах для других языков, чтобы переходя от языка к языку не приходилось переучивать команды MongoDB
Mikhail
Про методы не скажу, про вашу архитектуру мне ничего не известно. Но менять назания полей - нетипичично. Можно же сделать название нейтральное и менять валью.
Я имею в виду, что нужно менять разные поля у документа. И то есть можно написать отдельный метод для изменения каждого поля и передавать ему значение поля, а можно написать единый метод для изменения документа и передавать ему как аргумент поле и значение. Для этого нужно уметь подставлять данные из аргумента в поле внутри $set
Mikhail
Или где я туплю?
Mikhail
Названия полей остаются неизменными
Constantin
судя по всему вот так: const setObject = {}; setObject[field] = value; Categories.update({ _id: id }, { $set: setObject, });
Ну и всегда можно inplace синтаксис для es2015 объектов использовать, если вам хочется. Model.update({ _id }, { $set: { [field]: value } });
Aleksey
господа а можно как то ускорить начальный синк ? без разврата с rsync и таким ?
Aleksey
ну как то странно с чудесами. я вижу что упирается примерно в ядро.
Aleksey
а это довольно не то что я ожидаю увидеть
Aleksey
я конечно понимаю оплог и там всё такое но почему нельзя тащить коллекции в паралель тут логика пасует
Aleksey
лучший ответ — потому что не написали
Сергей
Подскажите пожалуйста почему на такой коннект к монге const MongoClient = require('mongodb').MongoClient; const assert = require('assert'); // Connection URL const url = 'mongodb://localhost:27017'; MongoClient.connect(url, function(err, client) { if(!err) { console.log('connect'); } }); выдает такую ошибку, хотя по доке это вроде бы стандартный коннект DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect заранее спасибо
yopp
Но если хочется прямо очень быстро, то быстрее переноса снепшотов ничего не придумали
Anonymous
Привет, подскажите, если используешь монгус, можно как-нибудь ему сказать, что вот эта схема может быть любой, и сохранять что хочешь ?
Constantin
Привет, подскажите, если используешь монгус, можно как-нибудь ему сказать, что вот эта схема может быть любой, и сохранять что хочешь ?
Можно, например через нативный коннект и получить его из объекта mongoose. Можно Mixed тип использовать для отдельных полей документа и писать дичь туда. Вроде ещё можно через опции схемы сделать, но это не точно.
Сергей
Передайте объект опций и укажите что он хочет
Делал, по таймауту падает через несколько секунд, хотя монга запущена в соседней вкладке
Constantin
Почему падает сказать не могу
Сергей
Все равно спасибо)
Nick
првоеряйте корректность адреса
A
Приветы Можете подсказать, есть ли человечий способ профайлингом найти не самые медленные запросы, а самые частые?
yopp
В new relic тоже что-то на эту тему есть
A
New Relic очень сильно дорогой. Но классный, да