yopp
Не подстроки, суффиксы или префиксы, не по семантическому расстоянию и даже не разным языкам одновременно
Dmitry
Тогда мы сделали все правильно, что навесили полнотекстовый индекс на поле с доменами, только надо было заменить симолы точки на что-то другое, верно? То есть мы ищем подстроку (простое доменное имя) в строке (сложное доменное имя).
yopp
yopp
yopp
Так как словом является googlecontent, а текстовый индекс не поддерживает частичных совпадений
yopp
Сделать ещё одно поле, в которое складывать сегменты массивом
yopp
По этому полю сделать индекс и уже по нему искать префиксом
Andrey
там почти также как предлагает yopp
Dmitry
То есть токенизировать url, и в новое поле складывать массив токенов?
yopp
yopp
Плюс если это свести к Attributre-Value паттерну, то можно ещё сделать поле в которое можно складывать разные данные и делать обобщённый поиск
Dmitry
Итак: 0.145.227.35.bc.googleusercontent.com -> [0, 145, 227, 35, bc, googleusercontent, com] - как из этого массива я могу найти google?
yopp
{v: 128, a: 'ipv4'}, {v: 'google', a: 'dns.a' } ...
yopp
yopp
Монга автоматически построит multikey индекс
yopp
yopp
Dmitry
Ясно, то есть это документы одной коллекции
yopp
Я так понимаю что вы пытаетесь сделать поиск по dns зонам. В данном случае вы можете делать в одном документе токенизацию по всем типам записей
Dmitry
Итак, в mongo нет инстумента поиска подстроки в строке на примере: поиск google в строке googleusercontent ?
Алексей
А в stats, в wiredTiger.block manager какие значения?
"block-manager" : {
"allocations requiring file extension" : 310527,
"blocks allocated" : 594913,
"blocks freed" : 286190,
"checkpoint size" : 343856025600.0,
"file allocation unit size" : 4096,
"file bytes available for reuse" : 44572495872.0,
"file magic number" : 120897,
"file major version number" : 1,
"file size in bytes" : 388428673024.0,
"minor version number" : 0
}
yopp
Но если вы собираетесь в gridfs снова что-то записать, то эти 43гб будут использованы
Алексей
Ну да. Это я понимаю. Просто тут пишут что мол используйте compact чтобы место освободить. Хотя в другом месте документации написано что не во всех случаях диск освобождается. Ладно спасибо за ответ.
https://docs.mongodb.com/manual/faq/storage/#how-do-i-reclaim-disk-space-in-wiredtiger
yopp
yopp
В этом случае вы сможете делать запросы вида {'idx.a': 'a.ttl', 'idx.v': {$gt: 3200} } или сложные,
в духе $and: [{'idx.a': 'a.ttl', 'idx.v': {$gt: 3200} }, {'idx.a': 'a.name', 'idx.v': /\Agoogle/}]
yopp
ну или можно поменять column и record type местами, тогда вообще можно будет искать без учёта типа записи {'idx.a': /\Aname/, 'idx.v': /\Agoogle/}
yopp
yopp
если у вас есть 400 гигабайт свободного места и достаточно времени, вы можете сделать копию коллекции
yopp
если у вас репликасет, то сделать rolling inital sync
yopp
так как коллекции будут созданы по новой, это место высвободится
Алексей
yopp
Кстати, всегда интересно почему s3?
yopp
Есть же более оптимальные по цене альтернативы: wasabi ($7/tb/m, free bw) или backblaze
Алексей
Я имел в виду s3 совместимое api. А не сам сервис Amazon. У нас развернут свой кластер Ceph. Он поддерживает S3 API.
Dmitry
nefertisu
Вопрос, а как можно убрать нижнее подчёркивание перед айди что бы было не _id, а id , потому что когда я вручную (nodejs + mongoose) указываю id: {type:Types.ObjectId} мне всё равно в результате выходит с нижним подчёркиванием
yopp
yopp
В монгусе вероятно есть возможность сделать алиас
nefertisu
yopp
Да, это аналог primary key в табличных хранилищах
Roman
Всем привет. Подскажите а есть какой то оптимальный метод по наполнению данными МонгоДБ?
nefertisu
А как в mongoose сделать массив вложенных схем. Например я хочу сделать что в какой-то сущости хранится массив объектов с определённой схемой, условно Project, когда я делаю projects : [Project] мне бьёт эррор, хотя в оф доке делают именно так
nefertisu
yopp
nefertisu
nefertisu
nefertisu
Project соответственно это схема
yopp
А что в ошибке?
nefertisu
nefertisu
nefertisu
nefertisu
импорчу просто через рекваер
Вадим
Привет. Подскажите, пожалуйста, такой момент.
Есть магазин, в котором есть базовая схема Product, содержащая общие для всех типов товаров поля, как то: название, цена и тд.
Есть типы товаров, обладающих разными характеристиками.
Получается, нужно описывать отдельную дочернюю схему для каждого типа товаров.
И при crud-операциях с товарами мне придется обращаться к конкретным дочерним моделям? Или это можно как-то реализовать, оперируя только родительской схемой Product?
nefertisu
Daniil
Daniil
попробуйте указать [Project.schema]
nefertisu
да, попробовал
nefertisu
сработало
nefertisu
спасибо!)
yopp
Привет. Подскажите, пожалуйста, такой момент.
Есть магазин, в котором есть базовая схема Product, содержащая общие для всех типов товаров поля, как то: название, цена и тд.
Есть типы товаров, обладающих разными характеристиками.
Получается, нужно описывать отдельную дочернюю схему для каждого типа товаров.
И при crud-операциях с товарами мне придется обращаться к конкретным дочерним моделям? Или это можно как-то реализовать, оперируя только родительской схемой Product?
Самый простой вариант это реализовать Attribute-Value паттерн.
Создаёте коллекцию описывающую необходимые вам атрибуты. В документ с продуктом добавляете массив поддокументов формата
[{a: attr_objectid, v: <значение атрибута>} ....]
Josh
yopp
В монгусе это будет attrs: [AttributeValue];
Atttribute {name: ..., type: ..., .... }
AttributeValue: {a: refs Attribute, v: ...}
Product: attrs: [AttributeValue]
Josh
Josh
для ddd, чтобы не тянуть всю дату на клиент на каждый чих в половине случаев
Вадим
yopp
Паттерны в отрыве от проблемы невозможно рассматривать. Сходу тут одна проблема превращается в три: храним события, вычисляем из событий конечное состояние, храним слепок состояния.
Josh
Josh
а любая доменная в итоге влечет к какому-нибудь схожему подходу
Josh
https://www.youtube.com/watch?v=rolfJR9ERxo что-то из посвежее сходу не нахожу
yopp
Вы никогда не угадает какие у вас проблемы будут потом :)