yopp
Точнее да, но это практически не влияет на итоговую latency
yopp
Потому что и так copy on write и записи в хранилище будут в случайном порядке, более того, один документ в хранилище тоже может быть в случайном порядке, если он не влазит в одну страницу
yopp
Это by design
yopp
Denis
Любые в принципе первые
yopp
Вам необходимо выбрать свойство, по которому вы хотите упорядочить документы, так как в монге нет гарантированного порядка по умолчанию.
Dmitriy
или там как-то хитрее?
yopp
Если не указана сортировка то будет использован негарантированный $natural порядок, который базируется на внутреннем номере документа. Afair, это не требует collscan, но это не точно.
Если указано поле, то в случае с индексом будет выбрано первых пят ключей индекса и возвращены документы соотвествующие этим ключам, если порядок сортировки совпадает с порядком индекса. Без индекса или если порядок не совпадает, монга попробует отсортировать все документы в памяти и если памяти хватит, то вернёт первые документы.
Dmitriy
Slavik
Привет, делал кто-то в монге историю изменений? В апке есть проекты которые могут изменять статус, нужно отслеживать время изменения статуса проекта. Как правильно хранить историю изменний? Лучше в документе проекта или создать отдельный документ для истории?
Alexey
Mikhail
Nick
Occama
Здорово народ, просветите по mongoDB shell.
Написал такую тему
1) Баш скрипт, устанавливает нужные приблуды и монго, стартует монго сервер и в конце пинает монго шелл скрипт
mongo < mongo-create.js
2) Сам монго шелл скрипт создает базу и сует простой документ
use blogdb;
db.articles.insert([
{
name: 'learn-react',
upvotes: 0,
comments: []
},
{
name: 'learn-node',
upvotes: 0,
comments: []
},
{
name: 'my-thoughts-on-resumes',
upvotes: 0,
comments: []
}
]);
Все работает как надо, только сам монго шелл скрипт имеет расширение .js (по доке вроде это правослано) и ясное дело ругается на синтаксис, ведь он не знает что такое 'use' или 'db'. Как это подправить и стоит ли вообще?)
HikkiMike
Привет всем! скажите я начал изучать mongo db и есть вопрос, как вы понимаете в каком проекте лучше использовать mongo db а в каком mysql ?
HikkiMike
HikkiMike
Dmitriy
почему все "писают" не могу сказать, могу назвать те плюсы, которые есть для меня их по большому счету 2: реплика и шардирование из коробки, отсутствие жесткой схемы.
Dmitriy
а, ну и если говорить именно о сравнение с mysql, то еще полноценная поддержка работы с json (я давно с мускулом не работал, но то что я видел в нем раньше про json очень сильно расстраивало)
HikkiMike
просто те кто юзают mysql говорят что mongo не для крупных проектов
Dmitriy
имхо, это из разряда холивара. 5 лет назад тоже самое говорили сравнивая pg и мускул. 10 лет назад сравнивая оракл и pg
HikkiMike
как по мне, нравится что нету sql, так же простота и удобно работать с json так как всё же spa пытаются сейчас все юзать
HikkiMike
ну и маштабируемость
HikkiMike
плюс нету сложных запросов от которых может грузится контент 5 лет
Dmitriy
Из крупных проектов в РФ если ничего не путаю к слову джум работает на монге и юла (из того что слышал)
HikkiMike
я такое встречал из за не оптимизированных запросов контент 10 сек грузился
Dmitriy
Dmitriy
HikkiMike
=))
HikkiMike
HikkiMike
благодарен
Dmitriy
не за что, ибо ответа по сути не было, т.к. его нет в принципе и все сильно зависит от конкретной прикладной задачи, ну и вашего личного интереса)
Den
В mysql 8, вроде, появилась поддержка json.
Dmytro
HikkiMike
да, есть
Dmitriy
в 5.7 я видел, но там поиск по полям json объекта это был всегда fullscan. но это не по теме канала если что)
Bat
просто те кто юзают mysql говорят что mongo не для крупных проектов
Хз как остальные, но в компании которой работаю я используют монгу только для агрегации данных. Там где нужно много джойнов - делают коллекцию, все туда собирают и по одному ID это быстрее достается на хите чем в Sql БД. Как основную я пробовал монгу юзать - проклял все на свете
HikkiMike
Dmitriy
и сложно в понимание после того к чему привык
Bat
madspectator
Я для парсинга сайтов использую монгу, удобно, что можно просто складировать данные в коллекции, не заморачиваясь на схемы. Ну и просто удобно, что можно пихать питоньи структуры как есть в коллекции монги.
Sergei
> удобно, что можно пихать питоньи структуры как есть в коллекции монги.
Dmitriy
madspectator
Что? )
Dmitriy
Что? )
потому что в монге хранится bson, но ни как не структура питона (ну или любого другого ЯП), где-то там посередине есть еще транслятор вашей питон структуры в bson и называется он драйвером)
HikkiMike
не понятноо
madspectator
HikkiMike
а кто на каких языках работает ?
HikkiMike
=)
Sergei
Python, Ruby
madspectator
Путон.
HikkiMike
js node js =)
Alexey
ищу ментора по mongodb crud, что бы объяснил простым языком принцип работы
Aleksandr
За деньги?
Kenan
Aleksandr
Сергей
Ребят, подскажите, как удалять документ если к нему не обращались какой то период времени?
Alexandr
Alexandr
Alexandr
Сергей
Oleg
привет, есть репликасет из 3х нод. 2 из них занимают порядка 7гб, а одна 10,5. при этом она не примари.
почему такое может быть?
madspectator
Скажите, если я делаю db.doc.count({foo: 'bar'}) и на поле foo нет индекса, монга прочитает все документы doc полностью или прочитает с диска только данные поля foo из каждого докумена?
madspectator
Я сам думаю, что полностью, хотя бы потому, что чтение с диска идёт минимальными единицами какими-то (блоки там какие-то или что-то такое), а документы у меня маленькие. Но вот, если бы поля были очень большими, тогда как бы чтение происходило, одно поле или весь документ?
critskiy
madspectator
Не понял вас, а что там может быть ещё кроме COLLSCAN, если индекса нет?
critskiy
ничего, I suppose, вторую часть вашего сообщения было мною увидено посмле того как отписался мною ответ….
critskiy
но, вроде бы, на мой взгляд, все-таки монга будет читать весь документ, потому что COLLSCAN предполагает следующее:
Collection scans indicate that the mongod had to scan the entire collection document by document to identify the results. This is a generally expensive operation and can result in slow queries.
https://docs.mongodb.com/manual/tutorial/analyze-query-plan/
critskiy
Тем самым, монга так или иначе даже с большими полями без всякого того индекса на это поле будет читать документ за документом
Andrey
монга 4.2
const query = ctx.db.db.collection<DbPayment>(Cols.Payments).find(
{
status: 'created',
optype: 'cashout',
executor: 'leo',
},
{ session },
);
const count = await query.count();
if (!count) {
return null;
}
const payments = await query.limit(count).toArray();
return payments;
я правильно понимаю что вместо этого кода нужно использовать aggregate $match, $project ?
Andrey
задача: выгрузить все элементы из коллекции по запросу
Andrey K.
Всем привет, прошу подсказки. У меня 32 бит и ОС Xubuntu. Поставил монго 2.6. и вот он ну никак не реагирует на sudo service mongod start , пишет unit mongod.service not found.
Прочитал про рецепт sudo systemctl unmask mongodb, в ответ mongod.service does not exist.
Есть идеи?
Kenan