Артем
Ребята, а почему монго шустрее работает, чем оракле или мсскл?
V
Yar
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
Olexii
т.е. получится рандомный skip, а так чтобы совсем рандомно (за 1 запрос) я в свое время не нашел
Hopf
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 же плох, если нужно много скипнуть, разве нет?
Anonymous
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
Nick
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
Nick
а можете сказать какую задачу пытаетесь решить?
Nick
а юзеры у вас что не регистрируются?
Анатолий
'' пробовал?
Анатолий
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
Кто-то может подсказать, как это можно реализовать в коде ?
Спасибо.
Ruslan
Vladislav
$unwind - $lookup - group $push
спасибо, а без $unwind как-то можно ?
Мне желательно созранить исходное число пользователей, и не увеличивать их число
Vladislav
(что nwind и делает)
Ruslan
у пользователя есть идентификатор?
Vladislav
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
смотри, есть {_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
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 стал не правильный ?
ктото может сталкунлся тоже с этим ?
Vadim
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 в помощь
D
А нам прикиньте после победы в конкурсе на лучшее новое приложение написали с программы newswatchtv что по amc показывают, типа хотим вас в передачу включить, сегодня общались с контент менеджером рассказывали подробнее о приложении, оказалось что вот такие расценки😂
D
Nick
это то приложение для работы с монгой с мобилы?
D
V
D
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
V
ASPIRIN
Всем привет! Можете помочь прояснить несколько моментов по replica set?
ASPIRIN
1. Если арбитр упал то все плохо? есть практики несколько арбитров держать? Например 3 вирт. сервера на 3х физических машинах и к ним еще по арбитру?
ASPIRIN
2. Есть ли практика настройки что бы читать с slave а писать на master?
Nick
арбитр - лишь участвует в голосовании и необходим для организации нечетного числа нод