Anonymous
странно, везде написано что для поля created_at не нужно создавать отдельное поле, а брать из objectId
я бы не советвовал завязываться на внутренюю реализацию каких-то вещей, которые могут меняться с течением времени, так же не стоит размазывать логику и делать ее неявной, отвветснность ид - это уникальный идентификатор, не более, если нужен ТС - создайте отдельное поле, которое будет ответственно за него, так же это поможет с различными кейсами, типа таймзон и тд
Anonymous
я удалил флуд, извените
William
Добрый день, извините за неудобства. Я новичок в mongodb. Я видел API-интерфейс с узлом и mongo, и он связан с реакцией. Проблема в том, что я не создаю пользователей и не устанавливаю пакеты, а я использую net :: ERR_CONNECTION_REFUSED.
William
извините за неудобства
Дмитрий
Народ, а подскажите чат, где можно искать заказы на it разработку.
Гена
Коллеги, подскажите, как добавить unique constraint в монго?
Гена
Гена
это не разные вещи разве?
Nick
смотря что вы вкладываете в понятие unique constraint
Гена
Unique Constraints — это одно поле или комбинация полей, которые определяют уникальную запись
Nick
да это именно оно
Гена
но индекс же это объект для, грубо говоря, быстрого доступа.
Гена
у меня в голове пока не укладывает
Nick
не только, тут нужно смотреть с точки зрения, что без индекса невозможно быстро определить есть ли такой ключ в базе, а значит наличие индекса обязательно, и опервх индекса накручивается логика на стороне базы чтобы невозможно было доабвить еще один ключ
Гена
А если индекс есть?
db.members.createIndex( { "user_id": 1 }, { unique: true } )
вот из этого получается создается индекс по полю user_id и сразу на это поле навязыввается констрейнт ?
Nick
кстати в IBM DB2 на z/OS как раз вы делаете отедльный индекс, а потом поверх него накручиваете констрайнт, который не создастся если ранее не было индекса.
Nick
Nick
вы не сможете после создания индекса добавить еще одного юзера с таким же ид - получите ошибку дубликата
Гена
А если есть такой индекс, но не уникальный - пересоздаем?
Nick
да
Гена
Понял. Спасибо
Гена
да
https://docs.mongodb.com/v3.4/core/index-unique/#building-unique-index-on-replica-sets-and-sharded-clusters
Надо стопать записи на реплике?
Nick
Гена
3.4
Nick
обновиться не хотите?
Гена
db.version()
3.4.9
Nick
чет почитал и понял, что по этому вопросу не подскажу
Гена
ну в любом случаем спасибо)
Semyon V
Ценная информация: если кто использует дешёвые инстансы на Scaleway, помните о том, что диски на них не физические, отчего скорость чтения крайне низкая. Хостить mongodb даже для низконагруженных проектов я бы там не советовал. Хорошо есть Atlas!
Semyon V
Гена
коллеги
подскажите от чего такая ошибка
* duplicate key error collection: **** index: *** dup key: { : "*****" }; nested exception is com.mongodb.MongoWriteException: * duplicate key error collection: ****
Гена
вроде на индекс жалуется
Nick
Гена
то есть в поле каком-то дублирующиеся поля?
Гена
вернее в поле дублирующиеся значения
Гена
просто индекс *** уже существует и он уникальный
RusaXXX
db.collection("logs").find().sort({createdAt: -1}) - вот такой запрос из кода находит все записи а потом сортирует. В какой момент происходит сортировка Сначала ищутся все записи. Найденные записи сортируется уже не в базе или в базе?
Гена
понял
Гена
спасибо
Nick
RusaXXX
какая разница?
я хочу чтобы сортировка была именно в базе а не нодовский процесс это делал
RusaXXX
Dmitriy
бинго, вот вы и ответили на свой вопрос, просто немного подумав
RusaXXX
только если брать реляционную базу, то там я в запросе указал что нужно остортировать. А тут полчуется что сначало отрабатывает метод find, который возвращает какую то коллекцию, и уже по этой коллекции происходит сортировка. То есть тут 2 последовательных вызова.
Daniil
RusaXXX
RusaXXX
Dmitriy
Anonymous
Всем привет, подскажите пжл, пытаюсь добавить TTL к документу, для этого у меня есть коллекция, каждый из документов которой должен жить определенное время, для этого создал индекс:
db.session.ensureIndex({"expiry": 1}, {expireAfterSeconds: 30})
в индексах коллекции вижу:
expiry_1 columns: expiry ASC 36 KB
expireAfterSeconds: 30
создаю документ с полем expiry: 1, создаю документ без поля expiry, ничего не происходит, документ не удаляется, что делаю не так? Спасибо.
Dmitriy
Всем привет, подскажите пжл, пытаюсь добавить TTL к документу, для этого у меня есть коллекция, каждый из документов которой должен жить определенное время, для этого создал индекс:
db.session.ensureIndex({"expiry": 1}, {expireAfterSeconds: 30})
в индексах коллекции вижу:
expiry_1 columns: expiry ASC 36 KB
expireAfterSeconds: 30
создаю документ с полем expiry: 1, создаю документ без поля expiry, ничего не происходит, документ не удаляется, что делаю не так? Спасибо.
в доке сказано: https://docs.mongodb.com/manual/core/index-ttl/ что тип поля на котором висит ttl индекс должен быть date или массив с date. у вас на сколько я вижу там int
Anonymous
Bulat
{ some_field: { $exists: false } }
Jack 🎲
Всем привет! Подскажите, пожалуйста. Как найти записи с sub_date которые равны сегодняшнему дню?
Jack 🎲
их я записываю как datetime.datetime.today() в бд (python)
Jack 🎲
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
yopp
Какую задачу вы решаете?
Anonymous
Какую задачу вы решаете?
Заказы, у заказов разные методы оплаты, тотал по каждому методу оплаты за заданный юзером промежуток времени, упор был на скорость разработки и на результат, поэтому решил сделать mapReduce, дабы не углубляться в аггрегацию
Anonymous
Объемы не промышленные, поэтому консернов по перфомансу не было вообще
yopp
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
Большое спасибо!
Nick
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