Anonymous
странно, везде написано что для поля created_at не нужно создавать отдельное поле, а брать из objectId
я бы не советвовал завязываться на внутренюю реализацию каких-то вещей, которые могут меняться с течением времени, так же не стоит размазывать логику и делать ее неявной, отвветснность ид - это уникальный идентификатор, не более, если нужен ТС - создайте отдельное поле, которое будет ответственно за него, так же это поможет с различными кейсами, типа таймзон и тд
Anonymous
я удалил флуд, извените
William
Добрый день, извините за неудобства. Я новичок в mongodb. Я видел API-интерфейс с узлом и mongo, и он связан с реакцией. Проблема в том, что я не создаю пользователей и не устанавливаю пакеты, а я использую net :: ERR_CONNECTION_REFUSED.
William
извините за неудобства
Дмитрий
Народ, а подскажите чат, где можно искать заказы на it разработку.
Гена
Коллеги, подскажите, как добавить unique constraint в монго?
Nick
Коллеги, подскажите, как добавить unique constraint в монго?
создать уникальный индекс https://docs.mongodb.com/manual/core/index-unique/
Гена
Гена
это не разные вещи разве?
Nick
смотря что вы вкладываете в понятие unique constraint
Гена
Unique Constraints — это одно поле или комбинация полей, которые определяют уникальную запись
Nick
да это именно оно
Гена
но индекс же это объект для, грубо говоря, быстрого доступа.
Гена
у меня в голове пока не укладывает
Nick
не только, тут нужно смотреть с точки зрения, что без индекса невозможно быстро определить есть ли такой ключ в базе, а значит наличие индекса обязательно, и опервх индекса накручивается логика на стороне базы чтобы невозможно было доабвить еще один ключ
Гена
А если индекс есть? db.members.createIndex( { "user_id": 1 }, { unique: true } ) вот из этого получается создается индекс по полю user_id и сразу на это поле навязыввается констрейнт ?
Nick
кстати в IBM DB2 на z/OS как раз вы делаете отедльный индекс, а потом поверх него накручиваете констрайнт, который не создастся если ранее не было индекса.
Nick
вы не сможете после создания индекса добавить еще одного юзера с таким же ид - получите ошибку дубликата
Гена
А если есть такой индекс, но не уникальный - пересоздаем?
Nick
да
Гена
Понял. Спасибо
Гена
да
https://docs.mongodb.com/v3.4/core/index-unique/#building-unique-index-on-replica-sets-and-sharded-clusters Надо стопать записи на реплике?
Гена
3.4
Nick
обновиться не хотите?
Гена
db.version() 3.4.9
Nick
чет почитал и понял, что по этому вопросу не подскажу
Гена
ну в любом случаем спасибо)
Semyon V
Ценная информация: если кто использует дешёвые инстансы на Scaleway, помните о том, что диски на них не физические, отчего скорость чтения крайне низкая. Хостить mongodb даже для низконагруженных проектов я бы там не советовал. Хорошо есть Atlas!
Гена
коллеги подскажите от чего такая ошибка * duplicate key error collection: **** index: *** dup key: { : "*****" }; nested exception is com.mongodb.MongoWriteException: * duplicate key error collection: ****
Гена
вроде на индекс жалуется
Nick
коллеги подскажите от чего такая ошибка * duplicate key error collection: **** index: *** dup key: { : "*****" }; nested exception is com.mongodb.MongoWriteException: * duplicate key error collection: ****
изза того что вы добавили уникальный индекс и он обепечивает уникальность при попытке добавить новую дублирующую запись
Гена
то есть в поле каком-то дублирующиеся поля?
Гена
вернее в поле дублирующиеся значения
Гена
просто индекс *** уже существует и он уникальный
RusaXXX
db.collection("logs").find().sort({createdAt: -1}) - вот такой запрос из кода находит все записи а потом сортирует. В какой момент происходит сортировка Сначала ищутся все записи. Найденные записи сортируется уже не в базе или в базе?
Nick
просто индекс *** уже существует и он уникальный
ну так и должно быть, уникльный индекс предотвращет появление дублей, вы пытаетесь добавить дубль - получаете ошибку
Гена
понял
Гена
спасибо
RusaXXX
какая разница?
я хочу чтобы сортировка была именно в базе а не нодовский процесс это делал
Dmitriy
я хочу чтобы сортировка была именно в базе а не нодовский процесс это делал
логическая задача: вы отправили запрос в базу, включающий сортировку, вам вернулся отсортированный результат выборки. кто сделал сортировку?)
Dmitriy
бинго, вот вы и ответили на свой вопрос, просто немного подумав
RusaXXX
только если брать реляционную базу, то там я в запросе указал что нужно остортировать. А тут полчуется что сначало отрабатывает метод find, который возвращает какую то коллекцию, и уже по этой коллекции происходит сортировка. То есть тут 2 последовательных вызова.
Anonymous
Всем привет, подскажите пжл, пытаюсь добавить TTL к документу, для этого у меня есть коллекция, каждый из документов которой должен жить определенное время, для этого создал индекс: db.session.ensureIndex({"expiry": 1}, {expireAfterSeconds: 30}) в индексах коллекции вижу: expiry_1 columns: expiry ASC 36 KB expireAfterSeconds: 30 создаю документ с полем expiry: 1, создаю документ без поля expiry, ничего не происходит, документ не удаляется, что делаю не так? Спасибо.
Bulat
{ some_field: { $exists: false } }
Jack 🎲
Всем привет! Подскажите, пожалуйста. Как найти записи с sub_date которые равны сегодняшнему дню?
Jack 🎲
их я записываю как datetime.datetime.today() в бд (python)
Anonymous
Всем привет, делаю mapReduce, не понимаю, почему reduce выполняется 2 раза, если документов больше 100, в документации ничего не могу об этом найти, теперь понял почему все ненавидят монгу 🙂
Anonymous
MongoDB can invoke the reduce function more than once for the same key. In this case, the previous output from the reduce function for that key will become one of the input values to the next reduce function invocation for that key. может invocate more than once, а может и не invocate more than once 😄 интересно
yopp
Какую задачу вы решаете?
Anonymous
Какую задачу вы решаете?
Заказы, у заказов разные методы оплаты, тотал по каждому методу оплаты за заданный юзером промежуток времени, упор был на скорость разработки и на результат, поэтому решил сделать mapReduce, дабы не углубляться в аггрегацию
Anonymous
Объемы не промышленные, поэтому консернов по перфомансу не было вообще
yopp
если задача решается AF, c mapReduce лучше не завязываться
Anonymous
Нужна статистика по каждому дню на протяжении последних 30 дней, и тп, уже усложняется агрегация
yopp
https://docs.mongodb.com/manual/reference/operator/aggregation/group/#group-by-day-of-the-year
yopp
у вас добавится в _id ещё постфикс в виде $type
yopp
_id : { d: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }, t: "$type" }
Anonymous
Спасибо, посмотрю, может перееду на агрегацию полностью, но все же написать mapReduce проще и быстрее чем правильный монго пайплайн с ее нюансами, имхо
yopp
нет, не проще и не быстрее
yopp
AF дубовый и там не очень много нюансов
yopp
если у вас будут конкретные проблемы, пишите
yopp
но посчитать сумму по двум измерениям это элементарная задача :)
Anonymous
Большое спасибо!
Viktor
Приветствую
Viktor
queryPlanner:Object plannerVersion:1 namespace:"Namespace" indexFilterSet:false parsedQuery:Object winningPlan:Object stage:"COLLSCAN" direction:"forward" rejectedPlans:Array executionStats:Object executionSuccess:true nReturned:2541036 executionTimeMillis:1978 totalKeysExamined:0 totalDocsExamined:2541036 executionStages:Object stage:"COLLSCAN" nReturned:2541036 executionTimeMillisEstimate:32 works:2541038 advanced:2541036 needTime:1 needYield:0 saveState:19851 restoreState:19851 isEOF:1 direction:"forward" docsExamined:2541036 allPlansExecution:Array serverInfo:Object host:"еуые" port:27017 version:"4.2.2" gitVersion:"a0bbbff6ada159e19298d37946ac8dc4b497eadf" ok:1