
Dmitriy
15.06.2018
11:46:06

Сергей
15.06.2018
13:39:55
Привет)
Подскажите плиз, как написать запрос в mongoose)
Есть коллекция элементов users
У юзера есть два поля counter_1 и counter_2, мне надо достать всех юзеров у которых counter_1 !== counter_2.
Не могу сообразить как такое написать (

Nick
15.06.2018
13:41:33
$expr

Александр
15.06.2018
14:02:22
Ребят подскажите плс, есть коллекция документов, в каждом документе есть массив поддокументов, мне нужно сделать выборку последних значений в поддокументах

Google

Артем
15.06.2018
14:04:36

Ruslan
15.06.2018
14:08:46
Ащпе, шайтан машина будет
Жаль стримы только через репликасеты
(я не про 4.0)

Артем
15.06.2018
14:10:40
Ну а потом сам знаешь) MoracleDb будет))

Сергей
15.06.2018
14:14:50
$expr
Спасибо, не знал про этот оператор)

yopp
15.06.2018
15:11:02

Ruslan
15.06.2018
15:54:08
Wtf? :)

yopp
15.06.2018
17:11:38
https://www.mongodb.com/blog/post/multi-document-transactions-in-mongodb

Artem
15.06.2018
17:13:25
поддержка транзакционности на уровне репликасета это уже очень круто.

7777
15.06.2018
18:18:14

Nikita
16.06.2018
09:32:32
привет всем!, использую mongoose, как в нем реализовать проверку на существующию модель если есть то обновить если нет то сохранить (сильно не пинайте ?)

Google

Andruha
16.06.2018
09:33:48
Конкретнее задачу опиши
У меня в одной модели должна быть при любом раскладе только одна запись всегда, тут проверяю через count === 1

Nikita
16.06.2018
09:44:42
Конкретнее задачу опиши
У меня есть запрос к стороннему апи с последующим сохранением результата в бд при любом раскладе эта запись должна быть одна (раз записалась, дальше только обновляется )

Andruha
16.06.2018
09:45:49

Nikita
16.06.2018
09:47:57

Andruha
16.06.2018
09:49:16
спасибо попробую
Может есть болен элегантный способ) я сам еще нуб в монге и ноде

Nikita
16.06.2018
09:51:28

Andruha
16.06.2018
09:52:30

Nikita
16.06.2018
09:52:31

Denis
16.06.2018
09:53:11

Nikita
16.06.2018
10:28:24
Спасибо ребята, гляну, пока не у компа, всем добра ))

Nick
16.06.2018
12:06:15
в данном случае обычный update с выставленным upsert:true. главное задать корректный фильтр

Nikita
16.06.2018
12:27:54

Nick
16.06.2018
12:28:48
https://docs.mongodb.com/manual/reference/method/db.collection.update/#use-unique-indexes
db.people.update(
{ name: "Andy" },
{
name: "Andy",
rating: 1,
score: 1
},
{ upsert: true }
)
во это пря ваш случай
https://docs.mongodb.com/manual/reference/method/db.collection.update/#insert-a-new-document-if-no-match-exists

Nikita
16.06.2018
12:34:10

Nick
16.06.2018
12:34:18
да

Nikita
16.06.2018
12:34:55
да
благодарочка )) плюсик в карму )))

Google

Nikita
16.06.2018
12:36:00
да
это я упустил про чтении документации ))

Артем
17.06.2018
08:07:14
Гайсы, а если несколько клиентов одновременно меняют запись, что происходит в Монго?

Алексей
17.06.2018
08:15:01
В айти не бывает одновременно

Артем
17.06.2018
08:17:07
я думаю ты понял, что имелось ввиду
в доках написано что update поддерживает атомарность в рамках одного документа
не могу понять как это?

Nick
17.06.2018
09:33:50
это значит что только одна операция записи будет проводиться над одним документом в один момент времени. используются стандартные блокировки на запись
также это значит что если одновременно из двух разных мест делается изменение значения поля, то результатом будет выполнение записи от самого нового
и туда же, если вы указыаете для фильтра некоторую информацию, которая меняется из другого коннекта, то от очередности зависит выполнится ли изменение или нет
смотри логи монги

yopp
17.06.2018
11:54:30
Ну вот и причина: не хватает дескрипторов.
https://docs.mongodb.com/manual/reference/ulimit

Vladimir
17.06.2018
12:55:32
Всем привет! Прошу помочь с агрегацией данных.
Есть несколько коллекций со строками, и нужно сгруппировать строки по некоторым (кастомным) признакам схожести. Грубо говоря, из этого:
{
a: ['aaa', 'bbb', 'ccc']
b: ['aab', 'bbc', 'xyz']
c: ['aac', 'uvw', 'xyz']
}
Должно получиться вот это
[
{ a: 'aaa', b: 'aab', c: 'aac' },
{ a: 'bbb', b: 'bbc' },
{ a: 'ccc' },
{ b: 'xyz', c: 'xyz' },
{ c: 'uvw' }
]
Изначальных коллекций около 20, размерность каждой - порядка 100тыс. записей.
Насколько это трудоёмко в реализации и по быстродействию на монге? Или имеет смысл смотреть в сторону реляционных БД?

Nick
17.06.2018
13:06:50
по всем коллекциям сразу невозможно
а так https://docs.mongodb.com/manual/reference/operator/aggregation/group/

Vladimir
17.06.2018
13:11:28
Насколько я понимаю, таким образом можно группировать только по предустановленным аккумуляторам... Проблема в том, что у меня в роли аккумулятора - кастомная js-функция сравнения. Я могу её каким-то образом применить для группировки?

Nick
17.06.2018
13:12:02
нет
хотя, можно использовать map-reduce и там уже что угодно в пределах почти чистого Js
но MR такое себе, если операции редкие то пойдет

Vladimir
17.06.2018
13:14:23
ок, спасибо, буду пробовать!

Google

Bandikoot
17.06.2018
15:45:01
если инициализация процесса происходит через systemd, то лучше прямо в service-файле прописать LimitNOFILE=%num%

invzbl3
18.06.2018
17:39:01
пытаюсь подключиться к кластеру и получаю ошибку:
"com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]"
Кто-то сталкивался с таким?
кластер уже создан, админ с паролем есть

Alexander
18.06.2018
17:40:56
Коллеги, а как сообщить mongos, что конфиг сервер другой?