
Roman
02.07.2018
10:38:59
>MongoDB превосходно работает в паре с Node.JS (нужно будет доустановить немного NPM-пакетов). А если при этом запускать через systemd — вообще шик. Ну и запускать, естессно, на сервере, зайдя на него через ssh из великолепного GNOME, работающим под божественным Wayland (подойдет любой GTK+-based терминал, например gnome-terminal). Сам сервер лучше держать на Microsoft Azure, а работал бы он на Fedora с патчами от глубоко уважаемой команды Grsecurity. А исходники держать на GitHub, и править их из-под Microsoft Visual Studio Code или вообще средствами самого гитхаба через превосходный Google Chrome.

User ?
02.07.2018
10:39:36

Roman
02.07.2018
10:40:10

User ?
02.07.2018
10:42:30
Спасибо, буду проникаться мудростью

Google

invzbl3
02.07.2018
18:01:35
ребят, как избавиться от предупреждения " WARNING: The file system cache of this machine is configured to be greater than 40% of the total memory. This can lead to increased memory pressure and poor performance."?
на стеке внятных решений не нашел

Ivanov
02.07.2018
19:05:45
Привет, подскажите
Есть таблица
A
{
id: 1
}
{
id: 2
}
{
id: 3
}
Есть
B
{
userId: a,
id: 1
}
{
userId: a,
id: 2
}
{
userId: b,
id: 3
}
Как зная userId = a, найти все записи из таблицы A?

Nikolay
02.07.2018
19:35:17
MongoError: Updating the path 'data.__scenes' would create a conflict at 'data.__scenes'
Объясните пожалуйста логику возникновения этой ошибки. Не получается нагуглить ?

Nick
02.07.2018
20:01:28
Как зная userId = a, найти все записи из таблицы A?
для начала в монге не таблицы а коллекции, ваша задача решается двумя способами. 1) в два запроса, сначала ищете что нужно в коллекции b потом по результату то что нужно в а обычными файндами. 2) используете aggregation с lookup. Если первый способ не нравится двумя запросами, то ищите умеет ли ваш драйвер/одм в populate

Nikolay
02.07.2018
20:03:55

Ivanov
02.07.2018
20:04:22

Nick
02.07.2018
20:04:56
а погуглить точно не поулчилось? вторая строка в гугле выдает стеоверфлоу с ответом
https://stackoverflow.com/questions/50947772/updating-the-path-x-would-create-a-conflict-at-x

Google

Nikolay
02.07.2018
20:06:04

Nick
02.07.2018
20:06:48
т.е. вас не смущает что нужно смотреть что вы одновременно set и unset одно и тоже поле?

Nikolay
02.07.2018
20:06:51
мб $set и $unset

Артем
03.07.2018
00:42:09
Ребята, а почему монго шустрее работает, чем оракле или мсскл?

M
03.07.2018
05:38:14

Yaroslav
03.07.2018
05:38:32
Здесь свои минусы и плюсы

Nick
03.07.2018
05:47:26
да, все оказалось проще, спасибо
понятие "шустрее" нужно явно указывать на каких данных, структуру, объем и что вы с ними делаете. нельзя категорично говорить о производительности транзакций, когда они в монге только появились а в оракле бысле скорее всег ос момента ее создания и закладывались в архитектуру

Vasiliy
03.07.2018
09:19:22
ребят всем привет, я с монгой начинаю только
подскажите пожалуйста, вот у меня есть вывод dbStats
"collections"=>2, "views"=>0, "objects"=>194511, "avgObjSize"=>6449.36419020004, "dataSize"=>1254472278.0, "storageSize"=>412340224.0, "numExtents"=>0, "indexes"=>3, "indexSize"=>4231168.0, "fsUsedSize"=>63822999552.0, "fsTotalSize"=>498241871872.0, "ok"=>1.0
как из этого понять сколько бд на диске занимает?

Phoenix»
03.07.2018
11:10:20
Последняя строка( в байтах?)

Vasiliy
03.07.2018
11:13:42
Да
Спасибо

M
03.07.2018
13:25:55
ребят а не подскажите почему такая ошибка возникла
error: {
"name": "MongoError",
"message": "seed list contains no mongos proxies, replicaset connections requires the parameter replicaSet to be supplied in the URI or options object, mongodb://server:port/db?replicaSet=name"
}
однин сервер выключали в реплике
на сутки
mongodb://10.132.2.71:27017,10.132.2.72:27017,10.132.2.73:27017/prod?replicaSet=rs0
вот такое URL используется

User ?
03.07.2018
14:27:36
Подскажите, можно ли сделать такой запрос, который будет возвращать радномные N значений по определенному фильтру?
bson.M{
"geopoint": bson.M{
"$sample": bson.M{"$near": bson.M{
"$geometry": q,
"$maxDistance": 10,
},
},
},
}).Limit(6)
У меня есть запрос поиска ближайших обьектов и результатов может быть больше 6, я бы хотел чтобы они выдавались рандомно

Alexey
03.07.2018
14:37:14

Google

Alexey
03.07.2018
14:37:42
т.е. получится рандомный skip, а так чтобы совсем рандомно (за 1 запрос) я в свое время не нашел

User ?
03.07.2018
14:51:28
правда выглядеть будет страшноватенько

Alexey
03.07.2018
14:54:53
правда выглядеть будет страшноватенько
@Override
public List findRandom(int size) {
Criteria status = Criteria.where("status").is(CommonStatus.ACTIVE);
long count = mongoTemplate.count(new Query(status), Clazz.class);
int diff = (int) count - size;
Query selectQuery = new Query(status);
selectQuery.skip(diff > 0 ? new Random().nextInt(diff) : 0);
selectQuery.limit(size);
return mongoTemplate.find(selectQuery, Clazz.class);
}
у меня на жабе так

Aydar
03.07.2018
15:04:02
skip же плох, если нужно много скипнуть, разве нет?

Phoenix»
03.07.2018
16:58:16

Nick
03.07.2018
17:05:29
Я бы предпочел выяснить конкретно задачу, а то может есть спомоб получше рендома
есть аналоги?
Нет аналогов, т.к. Скип это вычитка и пропуск доков из курсора. Максимум индексы для ускорения

Pavel
03.07.2018
18:12:43
Привет, можно ли как то фильтровать по json полю, есть сам json лежит строкой в базе

Nick
03.07.2018
18:14:00
Регуляркамт

invzbl3
03.07.2018
18:37:49
ребят, пишу запрос на соотвествие символа М:
db.zips.aggregate( { $project :{digits : {$substr : [ "$city", 0, 1] }, pop : 1, city : "$city", zip : "$_id", state : 1}},{ $match :{ digits : /\M/ } },{ $group :{_id : null, pop : { $sum : "$pop"}}}),
получаю ответ, все нормально:
{ "_id" : null, "pop" : 19499064 }
а как с несколькими символами реализовать?
пишу, к примеру, такой вариант:
db.zips.aggregate( { $project :{digits : {$substr : [ "$city", 0, 1] }, pop : 1, city : "$city", zip : "$_id", state : 1}},{ $match :{ digits : /\M/, /\B/, /\D/, /\O/,/\G/,/\N/ } },{ $group :{_id : null, pop : { $sum : "$pop"}}}), но получаю ошибку 2018-07-03T20:47:07.273+0300 E QUERY [thread1] SyntaxError: invalid property id @(shell):1:151

M
03.07.2018
23:39:01
Ребят так подскажите как правильно соединяется с mongo раньше можно было указывать все сервера а теперь максимум один в URL?

Oleg
04.07.2018
05:20:19
Users.findOneAndUpdate(
{user_id: 123},
{last_activity_at: new Date(), is_blocked: false, ...ctx.from},
{upsert: true, new: true}
)
Как мне узнать, что был создан новый элемент в коллекции, а не возвращен уже существующий?
Нужно поставить метку is_new_user: true.
Судя по всему, нужно делать дополнительный запрос выше. Другого варианта нет.

Nick
04.07.2018
09:07:24
Users.findOneAndUpdate(
{user_id: 123},
{last_activity_at: new Date(), is_blocked: false, ...ctx.from},
{upsert: true, new: true}
)
Как мне узнать, что был создан новый элемент в коллекции, а не возвращен уже существующий?
Нужно поставить метку is_new_user: true.
Судя по всему, нужно делать дополнительный запрос выше. Другого варианта нет.
вам это не нужно, т.к. вы используете findOneAndUpdate, он сдлеан чтобы избавить от необходимости делать отдельный поиск. если нужно знать, то два запроса

Oleg
04.07.2018
09:10:01

Nick
04.07.2018
09:10:33
а можете сказать какую задачу пытаетесь решить?

Oleg
04.07.2018
09:12:56

Nick
04.07.2018
09:14:44
а юзеры у вас что не регистрируются?

Google

Oleg
04.07.2018
09:15:20

Mikhail
05.07.2018
08:35:26
Помогите составить запрос. Мой псевдокод какой-то такой
{ a: 13, b: bArray.length ? { $in: bArray } : undefined }
Но если по undefined то тогда не находит совпадений

Анатолий
05.07.2018
09:00:26
'' пробовал?
https://docs.mongodb.com/manual/tutorial/query-for-null-fields/

Vladislav
05.07.2018
10:27:54
Друья, кто пользовал $lookup из Mongoose, Mongo ?
У объекта пользователя есть массив с ObjectId его детей. Этот массив нужно поменять на массив с объектами детей прямо во время aggregation query , т.е. с помощью оператора $lookup.
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/index.html
Кто-то может подсказать, как это можно реализовать в коде ?
Спасибо.

Ruslan
05.07.2018
10:31:04

Vladislav
05.07.2018
10:31:54
(что nwind и делает)

Ruslan
05.07.2018
10:32:27
у пользователя есть идентификатор?

Yurii
05.07.2018
10:32:34

Vladislav
05.07.2018
10:32:54
ни разу им не пользовался )

Ruslan
05.07.2018
10:35:56
смотри, есть {_id: 1, a: [1, 2], b: 3}, {$unwind: a} сделает тебе {_id: 1, a: 1, b: 3} и {_id: 1, a: 2, b: 3}, потом делаешь lookup, а потом группируешь по id: {$group: {_id: $_id, a: {$push: $a}, b: {$first: $b}}}, как-то так, но это не точно

Vladislav
05.07.2018
10:37:07
смотри, есть {_id: 1, a: [1, 2], b: 3}, {$unwind: a} сделает тебе {_id: 1, a: 1, b: 3} и {_id: 1, a: 2, b: 3}, потом делаешь lookup, а потом группируешь по id: {$group: {_id: $_id, a: {$push: $a}, b: {$first: $b}}}, как-то так, но это не точно
спасибо большое, теперь понял идею )

Ruslan
05.07.2018
10:41:51

Vladislav
05.07.2018
10:56:34
Друзья, а еще вопросик.
Почему такая очередь не работает:
const getChildAgeFactor = {
childAgeFactor: {
$map: {
input : user.profile.children,
as : 'userChild',
in : {
$map: {
input : '$profile.children',
as : 'targetChild',
in : '$$userChild._id'
}
},
}
}
};
И чем ее можно заменить ?
('$$targetChild._id' возвращает нормально, а вот '$$userChild._id' - нет, вместо него возвращает null)
Так тоже не выходит:
const getChildAgeFactor = {
childAgeFactor: {
$map: {
input : user.profile.children,
as : 'userChild',
in : {
$let: {
vars : { 'child1': '$$userChild' },
in : {
$map: {
input : '$profile.children',
as : 'targetChild',
in : '$$child1._id',
}
}
}
},
}
}
};

M
05.07.2018
13:21:40
Ребят помогите используем официальный драйвер mongodb для nodejs и после обновления версии он ругается что uri стал не правильный ?
ктото может сталкунлся тоже с этим ?

Vadim
05.07.2018
13:29:00

Google

M
05.07.2018
13:30:20
Так исправьте uri
почему ? если он по документации и там вот такая ошибка
seed list contains no mongos proxies, replicaset connections requires the parameter replicaSet to be supplied in the URI or options
а вот наш uri
mongodb://10.132.2.71:27017,10.132.2.72:27017/devdb?replicaSet=rs0

Mikhail
05.07.2018
18:03:03

Анатолий
05.07.2018
19:02:57

yopp
05.07.2018
21:48:47

Анатолий
05.07.2018
21:51:24

Yaroslav
05.07.2018
22:11:47

Dmitry
06.07.2018
22:34:01
А нам прикиньте после победы в конкурсе на лучшее новое приложение написали с программы newswatchtv что по amc показывают, типа хотим вас в передачу включить, сегодня общались с контент менеджером рассказывали подробнее о приложении, оказалось что вот такие расценки?