
invzbl3
07.09.2018
14:00:01
При замене его нельзя использовать

yopp
07.09.2018
14:00:06
или использовать capped collection?
capped collection позволяет ограничить максимальный размер коллекции. самые старые документы будут автоматически удаляться
https://docs.mongodb.com/manual/core/capped-collections/#create-a-capped-collection

Google

invzbl3
07.09.2018
14:05:18

AstraSerg
07.09.2018
14:08:20
Это невозможно
$set используется для замены определённых полей. Если сделать update без него, то замениться весь документ. Или я не прав?

yopp
07.09.2018
14:11:58
эээ. сделать апдейт без операторов?

AstraSerg
07.09.2018
14:12:57
ну да db.aaa.update({_id: 111}, {b:222})
типа такого

yopp
07.09.2018
14:13:10
день открытий. update в отличии от updateOne/updateMany это позволяет

AstraSerg
07.09.2018
14:13:30
весь документ с _id: 111 замениться на {_id: 111, b:222}

yopp
07.09.2018
14:13:34
да-да
https://docs.mongodb.com/manual/reference/method/db.collection.update/#replace-a-document-entirely

AstraSerg
07.09.2018
14:14:58
только не понятно, откуда тогда вопрос у @invzbl3

yopp
07.09.2018
14:15:17
не обращал внимания, так что был не прав

AstraSerg
07.09.2018
14:15:50
точнее из буфера терминала :)

Google

invzbl3
07.09.2018
14:21:18
На практике хотел попробовать метод replaceOne, но он не заменяет док-и в том виде, в котором я написал почему-то
Используя Java Driver, ребят, можно заменить полностью один док на другой, проверяя на совпадение поле?
Вот так высчитываю кол-во док-ов:
long count = collection.count();
Потом заменяю полностью один док на другой (не изменяя поле _id) по полю title:
collection.replaceOne(eq("title", title),
new Document("title", title)
.append("url", url)
.append("img", img)
.append("price", price));
По сути, мне без разницы даже по какому полю сравнивать и заменять, потому что все документы разные, каждый уникален

AstraSerg
07.09.2018
14:28:04
В смысле откуда?)
ну в том смысле, что это дефолтное поведение апдейта, а у вас не получается

invzbl3
07.09.2018
21:02:21

Constantin
07.09.2018
22:37:13
Насколько я знаю, update будет deprecated, и вместо него нужно будет использовать updateOne, updateMany

Naught
08.09.2018
04:24:22
Добрый день, подскажите пожалуйста по такому вопросу. MongoDB community, установленная по мануалу с сайта на сервер, не требует же никаких аутентификационных данных, и mongo консоль запускается нормально просто при указани хост и порт. Но с удаленной машины компасом не могу к ней подключиться. Пишет, мол, там не запущена такая. То есть она не будет доступна извне, Но будет доступна с машины сервера и можно особо не заморачиваться по поводу прав доступа, пользователей и т.п.?

ruby
08.09.2018
06:55:17
bindIp в конфиге посмотри

AstraSerg
08.09.2018
08:14:36

Naught
08.09.2018
08:15:11

AstraSerg
08.09.2018
08:17:30
Да не за что, дерзйте и обращайтесь, если что.

Vova
08.09.2018
11:21:05
Привет. Если у кого есть готовый конфиг проксирования Nginx -> MongoDB, поделитесь пожалуйста. По примерам из инета не работает у меня(

Max
08.09.2018
11:23:32
Конфига под рукой нет, но зачем? Вам tcp прям с nginx в монгу Надо? Какую задачу решаете?

Vova
08.09.2018
11:26:36
Монга работает локально, хочу поднять глобально и слушать например на порту 5100, чтобы подключаться удалённо, желательно через доменное имя
mongodb://login:password@domain.com:5100/db
Читаю про bind ip, не знаю то ли это что мне нужно

Max
08.09.2018
11:28:49
Проще может будет поменять конфиг монги чтобы слкшала на нужном порту на внешнем интерфейсе?

Vova
08.09.2018
11:29:38

Google

Vova
08.09.2018
11:31:43
А если я хочу поднять на локалхосте без ссл и на внешний доступ по ссл, как это правильнее сделать?

Max
08.09.2018
11:33:18
Боюсь что никак. Или так или так

Bandikoot
08.09.2018
11:33:47
могу заблуждаться, но nginx разве может в проксирование чистого tcp в free-версии? если память не изменяет, это фича платной

Vova
08.09.2018
11:33:48
Полагаю что из-за ссл будет всё медленно

Max
08.09.2018
11:33:50
Ну или проксирование, да, но как-то это странно
Не будет

Vova
08.09.2018
11:34:46

Bandikoot
08.09.2018
11:34:49
In NGINX Plus Release 5 and later, NGINX Plus can proxy and load balance Transmission Control Protocol) (TCP) traffic. TCP is the protocol for many popular applications and services, such as LDAP, MySQL, and RTMP.
...
Prerequisites
Latest open source NGINX built with the --with-stream configuration flag, or latest NGINX Plus (no extra build steps required)
https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/#
но ещё проще будет всё же средствами монги слушать внешний адрес и использовать ssl, если к бд не строятся 100500 коннектов


invzbl3
08.09.2018
12:40:02
Ребят, а за что отвечает параметр excludeId() https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/#suppress-id-field в примере ?
я понимаю, что с помощью include метода включаю поля, а exclude исключаю, но для чего нужен excludeId?

AstraSerg
08.09.2018
19:24:33

invzbl3
08.09.2018
19:28:45

Maxim
09.09.2018
08:07:56
привет! подскажите, пожалуйста, как удалить все документы с коллекции?

AstraSerg
09.09.2018
08:26:20

Maxim
09.09.2018
08:27:16
db.coll.remove({})
а это можно в кормпасе сделать? (ручками уже написал код и удалил) чот не вижу
ок, понял, спасибо

Osia
09.09.2018
08:30:45
А можно еще db.collection-name.drop()

Maxim
09.09.2018
08:31:27

Google

Osia
09.09.2018
08:32:31
Но тогда вся коллекция будет удалена

Maxim
09.09.2018
08:33:08
У меня тут ещё один вопрос - про индексы в монге, а точнее в монгузе. Какой-то мудак написал:
schema.index({
'requestedPickup.location': '2dsphere',
});
requestedPickup вместо requestedPickUp. Что произоёдт если я просто поменяю ключ по которому будет идти индекс и начну пушить новые документы? у меня в коллекции будет два индекса?

Constantin
09.09.2018
12:08:28

Maxim
09.09.2018
12:09:07

Alex
09.09.2018
13:12:47
подскажите пожалуйста, как обновить только одно поле в существующем объекте внутри mongoDB ?

Mikhail
09.09.2018
13:16:39

Alex
09.09.2018
13:17:31
set заменяет весь объект, нужно заменить только разницу в полях

another
09.09.2018
18:05:57
Привет, как с помощью pymongo обновить только те поля которые есть в пэйлоде(новых данных)?
Например: уже существует док {'_id': 1, 'job': {'job_field_1': 0, 'job_field_2': 1} }
fа новый пэйлод у нас только : { 'job': {'job_field_1': 55,}}
делаю так - collection.update_one({'_id': ObjectId(id)}, {"$set": job_dict}, upsert=False)
но обновляет только полностью совпадающие поля
по ключам совпадающие

yopp
09.09.2018
18:59:37

Alexander
09.09.2018
23:22:38
Всем привет. Коллеги, не сочтите троллем. Изучаю монгодб, не могу понять когда его стоит использовать вместо mysql\postgres и собственно почему. Это равноценная замена или в каких-то задачах монго непревзойден?


Nick
09.09.2018
23:40:13
Всем привет. Коллеги, не сочтите троллем. Изучаю монгодб, не могу понять когда его стоит использовать вместо mysql\postgres и собственно почему. Это равноценная замена или в каких-то задачах монго непревзойден?
все ситуативно, например классическая проблема монги, если у вас данные реляционные и запросы в терминах обычного sql требуют множества join-ов, то монга не лучший выбор. но это не будет проблемой если в базе несколько сотен тыщ записей и все они помещаются в кеш.
Дальше мое личное мнение: в общем случае лично я считаю, что монга хороша для следующих случаев:
1. для прототипирования, когда структура бд часто меняется и реально удобноно использовать json разной структуры. мало данных - любые запросы
2. когда вам нужен шардинг для хранения очень большого количества записей, которые обрабатываются парой тройкой запросов, по которым простроены индексы и больше никаких других. много данных - конкретный набор запросов, произвольные не допускаются
3. у вас есть специалист, который знает и умеет в монгу и он сказал, что все будет гуд на ваших объемах/задачах


Alexander
09.09.2018
23:41:30
да, я понял что монга это немного другой подход и тут не стоит выстраивать традиционные реляционные связи
https://www.youtube.com/watch?v=ZS_kXvOeQ5Y
я смотрел этот ролик
ну и по самой монге
https://www.youtube.com/watch?v=VELru-FCWDM

Nick
09.09.2018
23:42:27
у вас опыт в sql имеется?

Google

Alexander
09.09.2018
23:42:44
и везде аргументы идут за горизонтальное масштабирование, что есть реальная необходимость, но постгре с этим вроде почти из коробки справляется
да, mysql 10 лет
постгре последние полгода
ну мускуле шардинг запилить дело нетривиальное и если выбирать мускуль или монго для большого проекта, то выбор видимо очевиден
но вот сейчас я работаю с постгре и там с шардингом все значительно проще, а потому для меня аргументы про горизонтальное масштабирование становятся неясными

Nick
09.09.2018
23:44:45
на самом деле не очевиден, т.к. большой большому рознь. одно дело хранить гигабайты картинок/файлов, другое - идентификаторы на них и третье хранить связи документов и приложенных картиночек

Alexander
09.09.2018
23:46:25
вроде как файлы в базе не хранят уже
хотя могу ошибаться конечно

Nick
09.09.2018
23:46:32
если что, то моя позиция со стороны разработчика, а не админа. я понимаю про проблемы видные со стороны приложения

Alexander
09.09.2018
23:47:20
я тоже разработчик. администрирование знаю, но не профи
так что пока на одном языке говорим ?

Nick
09.09.2018
23:47:53
и к сожалению по постгре с шардингом не сталкивался

Alexander
10.09.2018
00:07:29
https://habr.com/company/oleg-bunin/blog/309330/