Denis
стринг я сам туда кладу стринг в API)
Denis
я предлагал такой способ отказались)
RapidCodeLab
в консоли вот как то так, зачем string хранить, лишние преобразование в / из ObjectID
Denis
Yii2 наоброт местами требует преобращования из Oid в id)))
Denis
https://www.yiiframework.com/extension/yiisoft/yii2-mongodb/doc/guide/2.1/ru/usage-mongoid
Андрей
Будет три страницы к примеру и у всех страниц есть мета данные title, description, keywords, правильно будет сделать на каждую страницу модель и дать этим моделям поля title, description, keywords или Создать модель PageMeta и там хранить документы которые связаны с моделями страниц ?
Artem
Не совсем понятны цели применения монги в вашем примере. Больше похоже на реляционную структуру. Сам json обект самодостаточен и не требует дополнительного описания мета данных. Если следовать рекомендациям этой книги https://www.amazon.com/MongoDB-Applied-Design-Patterns-Practical-ebook/dp/B00BPF348O то описанная схема не очень подходит для nosql бд
Anonymous
motor хороший драйвер?
Anonymous
Там версии последнии не поддерживаются и написано вроде одним человеком
Ilya
дак по асинхронному для питона вроде ничего нет другого
Ilya
и что значит не поддерживаются это про какие версии?
Ilya
[MOTOR-258] - MongoDB 4.2 Support
[MOTOR-290] - MongoDB 4.2 Transactions Support
[MOTOR-375] - MongoDB 4.2 ChangeStream Support
[MOTOR-384] - Port Python documentation examples to Motor
[MOTOR-400] - Fix synchro tests with PyMongo 3.9
[MOTOR-458] - Support Python 3.8
Скерис
Товарищи, можете подсказать, почему $toUpper работает только с англ символами?
db.getCollection('places').aggregate( { "$match": { "Name.RU": /динопарк/i}},
{ "$project": {
"_id": 0,
"NameEN": {"$toUpper": "$Name.EN"},
"NameRU": {"$toUpper": "$Name.RU"},
}}
)
-> {
"NameEN" : "DINOPARK CHELYABINSK",
"NameRU" : "Динопарк Челябинск"
}
Leonid
Скерис
благодарю(
CrusaderX
Привет всем, есть вопрос. У меня есть огромная коллекция, 100+гб. Я подключил к реплика сету новую ноду и она начала инитиал синк, она засинкала уже очень много но сейчас висит на этой коллекции, ускорит ли синк данных, если я дропну эту коллекцию на мастере?
CrusaderX
И где можно было бы прочитать про репликацию? В подробностях )
Anton
Имеется документ
{
"name":"Test",
"posts": [
{...}, {...}, ...]
}
posts - массив неизвестной длинны, как сделать запрос, чтобы обрезать массив до определенного количества элементов? Аля лимита в SQL
Nick
Anton
Зачем? Какую задачу решаете?
Пет-прожект - хочу написать соцсетку. Хочу коллекцию групп сделать, чтобы внутри хранился массив постов, при запросе на список групп, должно возвращаться последние пару постов, при запросе конкретной - все посты
Nick
Aleksandr
Размер документа имеет ограничение, при таком раскладе может стать невозможно пост в группу добавить
Nick
Тоже хотел этл написать, но в рамках пет проджекта такое маловероятно
Anton
Ну а если писать сразу как на прод, как лучше поступить? В отдельной коллекции хранить посты и какую-то ссылку иметь в доке с группой?
Aleksandr
В посте ид группы
Vadym
Привет, кто может подсказать хороший тул для отладки монго запросов? (Пользуюсь обычным explain, показывает что скан по индексу и фетч занимают 300мс в сумме, а запрос в целом 4,5с. Хотелось бы понять куда все время уходит. База локальная, запрос на 500 строк с группировками. Коллекция на 65к записей. 62k выбраны по индексу.)
Anton
В посте ид группы
Мне желательно и группу всегда возвращать, когда список групп показываю, и когда посты. Для результата с постами надо делать два запроса и это единственный выход? Модель в апи подразумевает в группе массив постов, можно ли как-то через aggregate собрать и инфу о группе, и ее посты?
Aleksandr
Можно одним запросом в монгу да, через agregate
Dmitry
Всем привет!
Есть вопрос по работе кластера mongoDB... есть три сервера один Primary и два Secondary..
Случилось так что один из Secondary отстал на две недели и не может синхронизироваться.
Замечено, что часть данных в коллекциях отсутствует..
Причем отсутствует странным образом... В коллекции документы есть... а части данных нет..
т.е. допустим есть документ Doc в нем было массив Doc.objects с 1500 тыс элементами.
Doc есть... а Doc.objects - пусто, при выполнении запроса из консоли..
Dmitry
Собственно вопрос - почему часть данных отсутствует .. mongoDB хранит данные размазывая их частями на сервера в кластере?
Dmitry
Мечтатель
Dmitry
Dmitry
Всем привет, на самом деле хочу задать вопрос, может кто поможет. Аудио попало сюда случайно😊 В общем столкнулся с такой проблемой, пишу бэк на ноде, фреймворк экспресс, бд монго. Для аутентификации экспресс-сейшн, на фронте реакт/редакс. Дело в том что по заложенной логике юзер регистрируется, постом отправляет данные, сервер при помощи монгуста сохраняет их, далее в экспресс-сейшн создаю свойство юзерАйди и записываю туда айди ну и возвращается 200’ОК’. Короче в этой сессии для данного юзера в итоге обращаюсь гет запросом по другому маршруту что бы после миддлвэйр проверок вернуть данные об этом пользователе. И тут начинается интересное, пытаюсь найти этого юзера в базе Model.findById или Model.findOne передаю айдишник из сессии, а возвращается null, если айди захардкодить то все работает🤷🏻♂️ нагуглил только что в схеме в mongoose.model() третьим параметром передать имя коллекции что бы изменить поведение могуста, когда он добавляет множественное обозначение схемы. Но это не помогло
Nick
Всем привет, на самом деле хочу задать вопрос, может кто поможет. Аудио попало сюда случайно😊 В общем столкнулся с такой проблемой, пишу бэк на ноде, фреймворк экспресс, бд монго. Для аутентификации экспресс-сейшн, на фронте реакт/редакс. Дело в том что по заложенной логике юзер регистрируется, постом отправляет данные, сервер при помощи монгуста сохраняет их, далее в экспресс-сейшн создаю свойство юзерАйди и записываю туда айди ну и возвращается 200’ОК’. Короче в этой сессии для данного юзера в итоге обращаюсь гет запросом по другому маршруту что бы после миддлвэйр проверок вернуть данные об этом пользователе. И тут начинается интересное, пытаюсь найти этого юзера в базе Model.findById или Model.findOne передаю айдишник из сессии, а возвращается null, если айди захардкодить то все работает🤷🏻♂️ нагуглил только что в схеме в mongoose.model() третьим параметром передать имя коллекции что бы изменить поведение могуста, когда он добавляет множественное обозначение схемы. Но это не помогло
Скиньте как формируете запрос на поиск
Nick
Там наверняка надо в ObectID конертнуть ваш ид
Nick
Есть проблема, коллекция выборка в которой идет по трех полях которые в одном индексе,
но сортировка идет по _id
с сортировкой запрос отрабатывает 4 сек а без пол секунды
db.messages.aggregate([
{
"$match": {
$and: [
{contact_id: ObjectId('5def685dd7b8163e855b70c9')},
{user_id: 7121586},
{bot_id: ObjectId('5def685c5d685a41d6123a67')}
]
}
},
{
$sort: {_id: -1}
},
])
Nick
Вот гляньте как тут поиск по ид сделан
Ростислав ✚
Подскажите как в mongoDB compas на windows отсортировать с конца в начало или посмотреть последние добавленные документы. Не смог ничего внятного нагуглить
Nick
Ростислав ✚
Nick
Кнопка sort
Андрей
Привет!
Как создать сайт портфолио? Стек для разработки выбрал MERN(mongo, express, react, node). Фронт напишу без проблем, но большой вопрос стоит в том как админку написать. Контент сайта: текст, картинки и ссылки на видео из youtube.
Где можно почитать про то как правильно создавать модели, схемы для страниц, как организовать хранение данных страниц в БД?
Nick
Александр
Подскажите ка сделать выборку. Есть коллекция, надо отсортировать по дате и вывести по одному документу от каждого автора. Это решаемо! Сложность с выводом определенного количества сгруппированных документов. Мне надо выводить по 40 документов за раз и сделать пагинацию.
Dmitriy
Александр
Сгруппированных документов всегда меньше, чем их количества в выборке. Проверял, нужен другой результат. 40 документов разных авторов.
Dmitriy
либо я не понимаю вашу проблему, либо одно из двух:
db.getCollection('test').aggregate([
{
$group: {
_id: "$name",
"count": {$sum: 1}
}
},
{
$sort: {"count": 1}
},
{
$skip: 1
},
{
$limit: 2
}
])
чем вас не устраивает такой запрос? данные для теста сделал такие:
[{"name" : "ivan"},
{"name" : "ivan"},
{ "name" : "petr"},
{ "name" : "petr"},
{ "name" : "petr"},
{"name" : "semen"}]
Dmitriy
@dd_bb плэйграунд 500-тит
Александр
либо я не понимаю вашу проблему, либо одно из двух:
db.getCollection('test').aggregate([
{
$group: {
_id: "$name",
"count": {$sum: 1}
}
},
{
$sort: {"count": 1}
},
{
$skip: 1
},
{
$limit: 2
}
])
чем вас не устраивает такой запрос? данные для теста сделал такие:
[{"name" : "ivan"},
{"name" : "ivan"},
{ "name" : "petr"},
{ "name" : "petr"},
{ "name" : "petr"},
{"name" : "semen"}]
У меня в коллекции более 5000 документов, мне нужно вывести по одному документу от каждого автора отсортированного по дате, выводить нужно по 40 документов за один раз, чтобы была погинация
Dmitriy
да, я вам запрос именно на это и дал
Александр
Метод группировки в агрегаторе работает только применимо текущей к выборке, что не обеспечивает, точное число после группировки
Dmitriy
Dmitriy
Dmitriy
только смещение по данным меняется
Александр
{ $group: "avtor": "$avtor", {docs:{'first":"$$ROOT"}},
Александр
Но я не могу делать группировку по всей коллекции, документов много и не понимаю как ограничить число сформированных доккментов
Dmitriy
покажите вашу структуру данных, пожалуйста?
Александр
Dmitriy
ок
Александр
ок
вот код завпроса
obvpublish.aggregate.([
{ $match: {}},
{$sort :{UpDate:-1}},
{$skip: 0},
{$limit : 10},
{$lookup: { "from": "obvs", "localField": "_obdId","foreignField": "_id", as: "data"}},
{$lookup: { "from": "accounts", "localField": "_avtorId","foreignField": "_id", as: "avtor"}},
{$lookup: { "from": "fotodos", "localField": "_obdId","foreignField": "_obId", as: "fotodo"}},
{
$group:{
"_id": "$avtorId",
document:{
$first:"$$ROOT",
},
],function(err,docs){
console.log(err,docs)
})
Александр
возвращает меньше 10 документов
Александр
как сделать, чтобы возвращало необходимое число сгруппированных документов, и соотвественно пагинацию?
Dmitriy
а почему у вас skip и limit выполняются перед тем как сформирован конечный результат запроса?
Александр
Александр
у меня в базе 23000 документов и 105 авторов
Александр
что будет если документов будет миллион и авторов за 50000
Dmitriy
у меня в базе 1.5ММ документов и ничего не подвисает))))
Александр
скорость обработки?
Dmitriy
упростите для начала выборку: уберите лукапы, откажитесь от получения документов в рут
Dmitriy
дайте все таки вашу схему данных, чет мне сильно кажется что вы пытаетесь реляционные правила применить к nosql хранилищу и от этого ваши проблемы
Dmitriy
а не из-за того, что выборка не работает
Александр
$first:"$$ROOT", - это как раз то что мне надо, берет по одному автору и первому документу из выборки
Dmitriy
зачем вам это все для списка? подозреваю, что эти данные понадобятся уже в карточке, где будет выборка уже по 1 автору
Александр
Dmitriy
как у вас организованы данные, давайте вернемся все таки к тому что вы дадите пример своих данных