Артем
Ребята, а почему монго шустрее работает, чем оракле или мсскл?
Yar
Здесь свои минусы и плюсы
Nick
да, все оказалось проще, спасибо
понятие "шустрее" нужно явно указывать на каких данных, структуру, объем и что вы с ними делаете. нельзя категорично говорить о производительности транзакций, когда они в монге только появились а в оракле бысле скорее всег ос момента ее создания и закладывались в архитектуру
Vasiliy
ребят всем привет, я с монгой начинаю только
Vasiliy
подскажите пожалуйста, вот у меня есть вывод 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 как из этого понять сколько бд на диске занимает?
Anonymous
Последняя строка( в байтах?)
Vasiliy
Да
Vasiliy
Спасибо
V
ребят а не подскажите почему такая ошибка возникла 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" }
V
однин сервер выключали в реплике
V
на сутки
V
mongodb://10.132.2.71:27017,10.132.2.72:27017,10.132.2.73:27017/prod?replicaSet=rs0 вот такое URL используется
Hopf
Подскажите, можно ли сделать такой запрос, который будет возвращать радномные N значений по определенному фильтру? bson.M{ "geopoint": bson.M{ "$sample": bson.M{"$near": bson.M{ "$geometry": q, "$maxDistance": 10, }, }, }, }).Limit(6) У меня есть запрос поиска ближайших обьектов и результатов может быть больше 6, я бы хотел чтобы они выдавались рандомно
Olexii
Подскажите, можно ли сделать такой запрос, который будет возвращать радномные N значений по определенному фильтру? bson.M{ "geopoint": bson.M{ "$sample": bson.M{"$near": bson.M{ "$geometry": q, "$maxDistance": 10, }, }, }, }).Limit(6) У меня есть запрос поиска ближайших обьектов и результатов может быть больше 6, я бы хотел чтобы они выдавались рандомно
могу подсказать только "псевдо рандомно" 1. считаешь общее кол-во объектов в коллекции (или своей выборке) 2. определешь разницу (diff) между общий и необходимым тебе 3. если разница >0 делаешь skip рандомного количества от (diff) 4. limit если нужно
Olexii
т.е. получится рандомный skip, а так чтобы совсем рандомно (за 1 запрос) я в свое время не нашел
Hopf
правда выглядеть будет страшноватенько
Olexii
правда выглядеть будет страшноватенько
@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); }
Olexii
у меня на жабе так
Aydar
skip же плох, если нужно много скипнуть, разве нет?
Nick
Я бы предпочел выяснить конкретно задачу, а то может есть спомоб получше рендома
Nick
есть аналоги?
Нет аналогов, т.к. Скип это вычитка и пропуск доков из курсора. Максимум индексы для ускорения
Avral
Привет, можно ли как то фильтровать по json полю, есть сам json лежит строкой в базе
Nick
Регуляркамт
ᅠ ᅠ ᅠ ᅠ
ребят, пишу запрос на соотвествие символа М: 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
V
Ребят так подскажите как правильно соединяется с mongo раньше можно было указывать все сервера а теперь максимум один в URL?
Oleg
Users.findOneAndUpdate( {user_id: 123}, {last_activity_at: new Date(), is_blocked: false, ...ctx.from}, {upsert: true, new: true} ) Как мне узнать, что был создан новый элемент в коллекции, а не возвращен уже существующий? Нужно поставить метку is_new_user: true. Судя по всему, нужно делать дополнительный запрос выше. Другого варианта нет.
Nick
а можете сказать какую задачу пытаетесь решить?
Oleg
а можете сказать какую задачу пытаетесь решить?
Запись в базу юзера. Если нет – записываем, если есть – обновляем. Но нужно в mixpanel.com отправлять инфу о новом юзере.
Nick
а юзеры у вас что не регистрируются?
Oleg
а юзеры у вас что не регистрируются?
Нет, любое действие - вызов middleware user.
Анатолий
'' пробовал?
Анатолий
https://docs.mongodb.com/manual/tutorial/query-for-null-fields/
Vladislav
Друья, кто пользовал $lookup из Mongoose, Mongo ? У объекта пользователя есть массив с ObjectId его детей. Этот массив нужно поменять на массив с объектами детей прямо во время aggregation query , т.е. с помощью оператора $lookup. https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/index.html Кто-то может подсказать, как это можно реализовать в коде ? Спасибо.
Vladislav
$unwind - $lookup - group $push
спасибо, а без $unwind как-то можно ? Мне желательно созранить исходное число пользователей, и не увеличивать их число
Vladislav
(что nwind и делает)
Ruslan
у пользователя есть идентификатор?
Yurii
(что nwind и делает)
для этого и последний $group, по-другому не получиться
Vladislav
ни разу им не пользовался )
Ruslan
смотри, есть {_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
Обновил пример
спасибо большое
Vladislav
Друзья, а еще вопросик. Почему такая очередь не работает: 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)
Vladislav
Так тоже не выходит: 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', } } } }, } } };
V
Ребят помогите используем официальный драйвер mongodb для nodejs и после обновления версии он ругается что uri стал не правильный ? ктото может сталкунлся тоже с этим ?
V
Так исправьте 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
Анатолий
google в помощь
yopp
google в помощь
В нашей группе не принято предлагать гуглить.
Анатолий
В нашей группе не принято предлагать гуглить.
Эм. ок. Сорри. Просто это была первая ссылка которую я нашел по запросу mongodb null query
Yaroslav
почему ? если он по документации и там вот такая ошибка 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
попробуйте перенести использование replicaset в опции коннекта монго клиента, а подключение к конкретной БД также вынести из строки соединения. примерно так: const client = await MongoClient.connect('mongodb://10.132.2.71:27017,10.132.2.72:27017', { { useNewUrlParser: true, replicaSet: 'rs0' } }); const devdb = client.db('devdb'); гарантировать не могу, но должно сработать
D
А нам прикиньте после победы в конкурсе на лучшее новое приложение написали с программы newswatchtv что по amc показывают, типа хотим вас в передачу включить, сегодня общались с контент менеджером рассказывали подробнее о приложении, оказалось что вот такие расценки😂
Nick
это то приложение для работы с монгой с мобилы?
Nick
Вот и релама сама получилась, бесплатно)))
Andru
хой! имею монгуз, хочу получить список удаленных документов, хотя бы их айдишники, возможно ли это без итераций? let deleted = await Item.remove({ gameid: game.id });
Ivan
а выбрать сначала id по этому условию?
Andru
а выбрать сначала id по этому условию?
ну это 2 строки, а я хотел в одну одним методом из коробки ) наподобие как insertMany возвращает список объектов, я думал и deleteMany, например, вернет, но нет
Anonymous
Plz use English
Anonymous
I'm a learner
Anonymous
I would like to learn Can any suggest me where I have to start
Bandikoot
Plz use English
https://t.me/mongo_db that's the english-speaking group
ASPIRIN
Всем привет! Можете помочь прояснить несколько моментов по replica set?
ASPIRIN
1. Если арбитр упал то все плохо? есть практики несколько арбитров держать? Например 3 вирт. сервера на 3х физических машинах и к ним еще по арбитру?
ASPIRIN
2. Есть ли практика настройки что бы читать с slave а писать на master?
Nick
арбитр - лишь участвует в голосовании и необходим для организации нечетного числа нод
ASPIRIN
арбитр - лишь участвует в голосовании и необходим для организации нечетного числа нод
есди он выпадет и выпадет вместе с мастером? что случится, как они будут разбиратся кто будет мастером?