Nick
а загуглить документацию к именно твоей версии, собственно куда меня и вывел гугл, религия не позволяет?
Arthur
встречный вопрос тебе: ответить на вопрос если знаешь ответ? религия не позволяет?
Arthur
)
Nick
вот смотри, мне инфяормация не нужна, я не в минусе, могу ничего не делать. тебе информация нужна - ты в минусе, если ничего не сделаешь
Nick
чуешь?)
Arthur
тебе отдохнуть наверно нужно)
Nick
да, 15 минут уже на работе. надо бы и отдохнуть хДД
Nick
лан отдохнул, https://docs.mongodb.com/manual/core/capped-collections/
Nick
там есть целый раздел с ограничениями
yopp
yopp
Это не конструктивно
Yaroslav
кстати, по поводу lookup. может кому-то будет полезно.
в документации ( https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ ) сказано что:
"If your localField is an array and you’d like to match the elements inside it against a foreignField which is a single element, you’ll need to $unwind the array as one stage of the aggregation pipeline."
но: https://jira.mongodb.org/browse/SERVER-22881
проверял - работает. но никак не найду время старые запросы попереписывать.
yopp
yopp
Тут подзапрос исключительно для формирования условия
yopp
Такие вещи лучше делать в два запроса, с контролем количества возвращаемых результатов.
yopp
yopp
Вытащить сначала айдишники (SELECT whom_id FROM follower WHERE who_id = ?) и потом уже сделать запрос с IN
λ
Мне нужно с Mongo же 😊
yopp
да какая разница
yopp
всё тоже самое и в монге. делать тут $lookup не нужно
Alexander
лукап весьма тяжелая операция
Alexander
я оценивал скорости - дешевле два последовательных запроса
λ
Я правда так и не пойму как мне узнать для кажого сообщения пользователя.
Так как нужно вывести сообщение и под ним имя пользователя который сообщение запостил.
λ
Да как вы их!?
λ
Я не пойму никак…
λ
Можно двуся звпросами вынуть сообщения и пользователей для всех сообщений, но совмещать их потом вручную?
Alexander
на стороне бекенда
Alexander
в монге получаешь массив сообщений
из этого результата получаешь уникальные айди пользователей - по этим айди запрос на информацию о пользователях
Alexander
либо пересмотреть схему
λ
Ладно былбы дикшенори с ключами по id. Тогда б
message_user = users[message['user_id']]
Alexander
возможно есть смысл принести имя пользователя в сообщения
Alexander
так сделай его :)
λ
А lookup не его делает?
Alexander
ну лично я отказался от лукапа
λ
ИМХО это одно и тоже, только с выполнением на разных сторонах "сервер базы" или "сервер бека" (запроса)
Alexander
по скорости быстрее два запроса сделать и руками собрать данные потом из этого
λ
Я бы потестил, но нет вермени
yopp
yopp
тьфу
yopp
это всё от "табличного мышления"
Alexander
ну сложно сходу перестроиться же )
yopp
Вы переложили схему из табличной базы в документную и теперь удивляетесь что это не работает
yopp
В вашем случае делайте три запроса
yopp
Выбираете id фолловеров, выбираете сообщения с offset и фильтром по u_id, выбираете id пользователей чьи сообщений попали в предыдующую выборку
yopp
Если индексы будут поддерживать эти запросы, всё будет хорошо
yopp
Проектирование лент мы тут недавно обсуждали, можете пролистать выше
λ
А насколько давно? :) Ииии может какое-то ключевое слово есть?
yopp
Anonymous
Всем привет. Вопрос по TTL.
Есть документы в них проставлены даты. Нужно удалить старше чем N секунд.
Делаю по документации созданием индекса.
db.my_collection.createIndex( { "created": 1 }, { expireAfterSeconds: 180 } )
Вот на таких документах
{ "_id" : ObjectId("blabla"), "created" : 1511872543.742637}
Даты хранил как в ISOdate, так и timestamp (float)
Не удаляются! =)
Ждал довольно долго - больше 180 секунд в несколько раз
Anonymous
Драйвер - pymongo
Anonymous
Монга последней версии на CentOS
Anonymous
Да и на Ubuntu нет нужного результата
Talgatio
Ребята, можно както в монге расширить объект инстанса ??
Talgatio
Company.find({}, (err, data) => {
data.forEach(item => {
User.count({company: item._id}, (err, usr) => {
item = usr;
console.log(item);
})
});
})
Talgatio
я делаю find и мне в data приходит массив всех объектов из дб, мне надо этот инстанс расширить
Talgatio
Как это можно сделать
Arthur
Подскажите как можно исправить ошибку при создании курсора на пустую capped коллекцию (подключаюсь через mongoose)
MongoError: No more documents in tailed cursor
return epc.find(query)
.tailable(true, {awaitdata:true, numberOfRetries:Number.MAX_VALUE})
.cursor();
Talgatio
я бегу циклом по объекту data и получаю один объект интстанса
Михаил Макарычев
Всем привет. Есть коллекция с полем is_auth, которое равно true или false. Могу ли я одним запросом узнать разницу между количеством всех пользователей и количеством залогиненных пользователей?
Михаил Макарычев
Решил проблему таким запросом:
users.aggregate([
{$group: {_id: "$is_auth", total: {$sum: 1}}}
])
Anonymous
Я свою пока не решил.
На данный момент документы имеют вид:
{ "_id" : ObjectId("blabla"), "createdAt" : ISODate("2017-11-28T16:37:20.403Z")}
Индекс создан таким запросом
db.my_collection.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 60 } )
Вроде как должно отрабатывать каждые 60 секунд:
db.adminCommand({getParameter:1, ttlMonitorSleepSecs: 1});
{ "ttlMonitorSleepSecs" : 60, "ok" : 1 }
yopp
3) Нужно проверить время на сервере
yopp
4) 2017-11-28T16:37:20.403Z + 60 seconds = 2017-11-28T16:38:20.403Z
yopp
важно понимать что Z это UTC
yopp
по UTC сейчас 13:56
yopp
yopp
yopp
На уровне приложения делать retry
yopp
Либо вставлять пустой документ
Anonymous
важно понимать что Z это UTC
Спасибо!
#ttl Если кто столкнется, то в Python, поле по которому строится индекс нужно заполнять так:
datetime.datetime.utcnow()
yopp
можно вообще серверное время использовать
Anonymous
Поищу по необходимости, спасибо. Пока что пусть будет UTC - удобно вроде
yopp
Anonymous
Погуглю, спасибо
Владимир
Всем доброго времени суток! Может кто нибудь поделиться болью о связке mongodb + celery?
yopp
Михаил Макарычев
Владимир
Celery же в amqp умеет, зачем монга?
Amqp это просто очередь. Монга, чтобы постобработкой заниматься. Может я на счёт amqp ошибаюсь. Но натыкался на реализацию MRQ ( R- это Redis в качестве брокера)