yopp
ObjectId уникален в пределах коллекции только. Гарантии нет, если мы говорим о базе в целом
ObjectId — псевдослучайное значение. Никто не гарантирует его уникальности. Гарантия уникальности есть только у поля _id в корне документа. Все остальное не гарантируется. На практике получить коллизию ObjectId будет близко к невозможному.
yopp
Нода. Решил проблему одним подключением, дальше просто его инстанс в апп прокидываю и работаю.
http://mongodb.github.io/node-mongodb-native/3.0/reference/connecting/connection-settings/ Если вы используете современную версию, то судя по poolSize драйвер уже разруливает эту проблему за вас. Главное используйте ссылку на инстанс MongoClient
yopp
Я с вами скоро на js писать начну
Anonymous
Спасибо, завтра гляну, впервые познакомился сегодня
SvPupok
Я с вами скоро на js писать начну
)))))) давай уж на Питоне лучше
Ruslan
)))))) давай уж на Питоне лучше
питон на фонтенде не пашет)) а так, да, в нем хотябы приколов с точностю вычисления нету)))
Ruslan
Ну хватит уже. 0.1 + 0.2 != 0.3 не только в js
неее, в js 9999999999999999 != 9999999999999999
Denis
Если нужны точные вычисления и очень большие числа, то есть для этого пакет. В типичных задачах которые решает жс точность не нужна вообще же..
Михаил Макарычев
неее, в js 9999999999999999 != 9999999999999999
И часто вы такие сравнения выполняете?
Ruslan
PS: Не, правда. Это просто раздули именно в JS. Т.е. к нему приковано негативное внимание и из мухи слона делают.
Ruslan
както так исторически
Михаил Макарычев
ежесекундно)
А оставшиеся 99.9% разработчиков на js с этим вообще не сталкиваются
yopp
Обсуждение языков не в этой группе
Maxim
Привет. Подскажите, пожалуйста: у юзера есть вложенный массив с уведомлениями. Нужно сделать пагинацию по уведомлениям (offset, count). Можно ли как то сделать выборку по вложенным документам или нужно получать сразу все уведомления и отправлять только нужные?
Maxim
И если можно, то будет ли это быстрее?
SvPupok
Админ, а выдайте плз амнистию для @Anc1ent)
Анатолий
неее, в js 9999999999999999 != 9999999999999999
Number.MAX_SAFE_INTEGER посмотри, в любом языке есть число, выходя за пределы которого появляются аномалии
Maxim
Вынесите их в отдельную коллекцию
Когда тогда использовать вложенные документы? Во всех примерах в них обычно даже комментарии к сущностям хранят, список лайкнувших и прочую инфу, которая, очевидно, не должна подгружаться полностью
Анатолий
Монга не очень любит большие вложенности и большие обьемы данных в одном документе
Анатолий
К примеру есть человек и у него 3 телефона + 2 емейла
Анатолий
Есть фирма и у нее 50 сотрудников
Анатолий
И то и то вложенность, но второе не стоит хранить в одном
Анатолий
Если монга принимает любой формат, это не значит что нужно лепить все в одно, единственное исключение - ты выбираешь всегда это одно сколько бы его ни было и тебе все это нужно, тогда да, можно лепить очень много данных.
Анатолий
В твоем случае нотификация - отдельна ясущность со своим выводом с пагинацией итд
Анатолий
вынеси ее
Maxim
Понял, спасибо
Анатолий
Тебе же будет проще с ней работать, удалять добавлять итд
Dnk
Нет, нужно сделать $lookup (у Mongoose это заключено в функцию populate).
CHIP
Привет
CHIP
Посоветуйте русскоязычную документацию по администрированию монги
SvPupok
русскоязычной документации не так уж и много, я кидал ссыль на "MongoDB в действии" Кайла Бэнкера. Примеры приводятся с версией 2.6, по по сути, книга до сих пор актуальна.
Sergey
и пытаться читать официальную
Hopf
Нет, нужно сделать $lookup (у Mongoose это заключено в функцию populate).
А можно пример? Я попытался сделать и у меня не получилось. Моя схема такая route { POIs [<ObjectID1>,<ObjectID2>], name: "myRouteName" } POIs { <ObjectID1>, "name":"dd", "description":"desc" } Я хочу, чтобы при запросе к route Выдавался такой документ { POIs [ { "name":"dd", "description":"desc"} , { "name":"d2", "description":"desc2"} ], name: "myRouteName" }
Nick
если мы про монгус
Hopf
я про монго-консоль, а потом это на го с использованием mgo напишу
Nick
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
Nick
по драйверу го не подскажу, может там есть вменяемый способ аналогичный populate
Hopf
Все равно не понял, но спасибо.
Nick
читайте доки, разбирайтесь как работают запросы в монго и как оно реализовано в вашем драйвере, а потом переходите к кодингу
Nick
всегда можно сделать максимально топорным методом, лишь бы работало
Nick
но если нужно чтобы работало нормально, то все-таки придется разбиратсья
Nick
в данном случае топрный метод - это просто вытащить все доки, и дял каждого POIs у него вытащить доп объект и собрать уже то что требуется. без разбирательств только так
yopp
Это соглашение о хранении ссылок на документы. Грубо говоря рекомендация, чтоб не делали своих велосипедов. Ничего автоматически происходить не будет, если ваш драйвер не умеет или не настроен этого делать.
Alexander
парни, чем можно заменить MyModel.update, чтобы новые доки возвращал?
Alexander
multi: true
Vladyslav
Всем привет. Хотел бы узнать как понять где можно использовать mongodb, а где уже стоит использовать реляционную бд. Дело в том, что в любом мелком проекте есть хотябы одна связи и вот хотел бы узнать как справляется $lookup. Какие есть тонкости. Актуальной информации об опыте использования я не нашел. Спасибо тем, кто отнесется с пониманием к вопросу и ответит.
yopp
$lookup относится только к агрегациям.
yopp
В остальном вопрос не в нормализации/денормализации, а в том, насколько у вас жесткие требования по поддержанию актуальности связанности.
yopp
В монге нет транзакций и изоляции
yopp
В остальном: реляционные базы для join делают подзапрос. А монге это проблема клиента, будете сами (или ваш драйвер/ode) их делать
yopp
Дров по незнанию можно где угодно наломать
Анатолий
Это прекрасный совет
Nick
Зато сразу поймешь где ее можно использовать и как структуру данных подстраивать по монгу
Nick
Чисто на своем опыте
Анатолий
Чтоб монгу использовать, можно ее подучить самостоятельно и тогда будешь знать где ее можно а где не стоит использовать
Анатолий
Супер, сразу в бой на продакшен, поламаешь все, зато будешь знать как ее использовать, вот это отличный совет
Анатолий
Если есть вопрос "а где и как использовать продукт А", значит лучше его подучить дома, почитать еще литературы, попрактиковаться на тестовых данных/проектах
yopp
Вы свой максимализм умерьте.
Анатолий
В двух словах никто на этот вопрос не ответит
yopp
Основная разница в отсутствии транзакций. Если мы говорим о хранении данных с жесткими требованиями по целостности связанности и изоляции, например деньги, то удобнее и проще будет с субд которая поддерживает такие инструменты. В остальном, что быстрее позволит денег начать зарабатывать.
Анатолий
Основная разница в хранении данных
Анатолий
И это очень сильно расслабляет
Alexander
🍿🥤– началось кино ))
Анатолий
Я в свое время совал все в один документ, потому что это очень удобно
Анатолий
можно ведь, и это было круто после реляционных бд