Bogdan
Коллеги, добрый вечер.
Объясните, пожалуйста, в чём загвоздка?
.aggregate([
{
$lookup: {
from: 'userChat',
localField: 'userId',
foreignField: 'userId',
as: 'fromItems',
},
},
{
$replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ['$fromItems', 0] }, '$$ROOT'] } },
},
{
$match: {
// chatId,
status: 'ACTIVE',
},
},
]);
Возвращает:
[
....
chatId: '5fa989e61ebeab38b09b6d3e'
....
]
но если я в запросе комментирую условие status: 'ACTIVE'
и раскомментирую chatId, то запрос ничего не выдёт, почему ?
chatId - string или objectid?
🔰ш
Ребятки, подскажите, есть модель countries, у которой есть virtual bases,
Механизм работы примерно такой:
получаем страну, делаем popuate bases, проходимся по популированному массиву и при определенном кондишн удаляем эту base
🔰ш
Как при этому корректно удалить базу?
🔰ш
(если что вопрос про монгусь)
🔰ш
Юзать await base.remove() в country.bases.forEach?
🔰ш
Потому что в последствие у country будет использовано virtual значение которого зависит от country.bases
охангаран
вам тоже какой-то kelvin brown пишут?
yopp
охангаран
I'm sorry to invade your privacy would love to have a word with you concerning a very lucrative information about a platform, where you can invest and make profits after a short period of time
охангаран
ребята не могли бы сказать где я проспустил ошибку ?
охангаран
охангаран
охангаран
я вообще с postmanom все праильно сделал?(а то давно с ним не работал)
yopp
охангаран
ой да там у меня ничего нету
maxsimych
ой да там у меня ничего нету
Судя по ошибке, ты не используешь миддлвару для парсинга body, типа express.json()
В постмане всё ок. Вообще, это вопрос по ноде @nodejs_ru
Dmitriy
всем привет. Кто-нибудь использует {$exists: false} в запросах? Как сделать, чтобы такой запрос не тупил?
db.getCollection('test1').find({status: {$exists: false}}).count()
Nick
индекс
Dmitriy
есть индекс, { "status" : -1.0 }
запрос db.getCollection('test1').find({status: 1}).count() - 0.2 секунды, а с exists - 1 секунду
количество в ответе примерно одинаковое
Viktar
Подозреваю что экзистс не использует индекс.
Dmitriy
даже вообще без индекса find({status: 1}) работает 700 мс, а с exists не пойму что
yopp
$exists не селективный запрос, для которого планировщик может выбрать collscan.
Посмотрите какие планы применяются в разных случаях: до find добавьте explain({executionStats:1})
Dmitriy
в случае exists добавляется
"stage" : "FETCH",
"filter" : {"$nor" : [ {"status" : {"$exists" : true}}]},
Dmitriy
т.е. после поиска по индексу он еще и по результату проходит?
Dmitriy
пробовал добавлять проекцию, {_id:0, status:1}
не помогло) в план еще сверху добавляется PROJECTION и все
Dmitriy
получается, фильтр по status и в проекции только он - должен быть covered
yopp
Попробуйте сбросить кеш планов
yopp
https://docs.mongodb.com/manual/reference/method/PlanCache.clear/
Dmitriy
Неа, не меняется. Коллекция тестовая рандомная, на 1 млн записей
yopp
а как кеш планов выглдяит?
Artem
Коллеги, добрый день. Подскажите, может кто сталкивался.
Использую lookup для массива:
$lookup: {
from: 'user',
localField: 'participants',
foreignField: 'userId',
as: 'participantsInformation',
},
Получаю:
{
type: 'buy',
creatorId: '...',
participantsInformation: [Object, Object]
}
Можно ли убрать не нужные поля внутри participantsInformation ? И с помощью чего можно это сделать.
Artem
Коллеги, добрый день. Подскажите, может кто сталкивался.
Использую lookup для массива:
$lookup: {
from: 'user',
localField: 'participants',
foreignField: 'userId',
as: 'participantsInformation',
},
Получаю:
{
type: 'buy',
creatorId: '...',
participantsInformation: [Object, Object]
}
Можно ли убрать не нужные поля внутри participantsInformation ? И с помощью чего можно это сделать.
разобрался.
$project: {
participantsInformation: {field: 0}
}
SuleYman
Всем привет, могу ли я поднять монго без авторизованных данных?
Nick
SuleYman
У меня есть скрипт,
$client = new \MongoDB\Client("mongodb://root:example@localhost:27017");
return $client->parser_ad; // бд там не указан логин и пароль
SuleYman
Точнее так
$client = new \MongoDB\Client("mongodb://localhost:27017");
SuleYman
у меня он в докере
Nick
а в чем проблема?
SuleYman
Да вот хочу понять, почему без авторизованныйх данных работает)
SuleYman
сейчас понятно) что он так умеет
Сергей
Коллеги, а подскажите пожалуйста. На mongo 4.4 команда compact требует дополнительного места на ФС? Не создает ли она случайно дополнительных файлов в процессе работы? Ну и с какой скоростью она работает?
Vitaliy
Кто-нибудь поднимал Dart + MongoDB в Docker ?
Если работаю с Монго не в докере, всё норм. Использую mongo_dart: ^0.4.4
Как только поднимаю Монго и Дарт в Докере и обращаюсь к Монго получаю ошибку :
main.dart:2:8: Error: Error when reading '/C:/Users/vital/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/mongo_dart-0.4.4/lib/mongo_dart.dart': No such file or directory
Почему-то не видит пакет mongo_dart...
mongo_dart указан в pubspec.yaml, но в docker-compose о нём нет упоминаний. Мне казалось что pubspec достаточно один раз указать...
Что может быть не так?
Что может не хватать?
Куда посмотреть?
Roman
Подскажите решение. Есть коллекция папок, они имеют древовидную структуру, т.е. есть родители и их потомки. При удалении родителя я по идеи должен удалить всех его потомков, но у этих потомков могут быть свои потомки. Как подобное реализовывать в mongo?
Daniil
Roman
Aleksey
Здравстуйте! Подскажите, пожалуйста, какой таймаут нужно увеличить или в чем проблема :) Был один сервер MongoDB с одной БД . Решил сделать шард: добавил ещё один сервер MongoDB (на другом железе), раскидал mongos и 3 инстанса config server на этих 2х серверах, включил шардинг и заработал балансировщик. Вроде как всё делал по гайду из оф. документации. Но в sh.status() такое:
Migration Results for the last 24 hours:
551 : Success
213 : Failed with error 'aborted', from SH02 to SH01
В логах нашел вот такие ошибки (лог мастера конфиг серверов):
{"t":{"$date":"2020-11-10T15:35:30.416+00:00"},"s":"I", "c":"SHARDING", "id":21872, "ctx":"Balancer","msg":"Migration failed","attr":{"migrateInfo":"my_db.my_collection: [{ url: -9210733429031459461 }, { url: -9210102178726602920 }), from SH02, to SH01","error":"LockTimeout: Unable to acquire X lock on '{12336033448886408517: Collection, 806818402817938757, my_db.my_collection}' within 500ms. opId: 454461, op: MoveChunk, connId: 0."}}
S
Здравствуйте, подскажите пожалуйста, какой запрос мне написать чтобы сделать как на скрине?
Anonymous
господа, есть коллекция с такими документами
{
"date": date,
"logs_spot": [],
"logs_futures": [],
"open_date": util.get_time_now()
}
я заливаю в массивы сообщения вида
{'chat_id': chat_id, 'data':data}
Как найти все данные для нужного chat_id во всей коллекции, проходя по массивам?
Anonymous
что-то типо find {'logs_spot.chat_id': chat_id}?
Anonymous
$elemMatch подойдет?)
Anonymous
Привет Пара вопросов
Anonymous
1 просьба подсказать хорошие книги /материалы по java + mongodb
Anonymous
2 просьба подсказать хорошие книги /материалы по java with Mongo design patterns
Anonymous
Заранее огромное спасибо
Nick
Anonymous
Anonymous
Nick
Nick
и это должна быть задача разворачивания БД, а не уровень кода
Anonymous
Также хотелось бы глянуть на код правильных java проектов Также Best practices Паттерны и антипаттерны
Anonymous
Возможно конечно я несколько усложняю
Nick
сильно усложняете, монга позволяет делать как удобно именно вам именно в вашем проекте и не накладывает лишних ограничений. Поэтому бестпрактисы - это в основном про построение структуры БД именно в соответствии с вашими задачами
Anonymous
Nick
миграции в ней практически не нужны и даже вредны если данных уже много, а нужно только уметь работать с опциональными полями - и это закладывается при проработке решения в рамках mvp - на оснвое чего можно уже построить нормальную структуру БД
Nick
и основное - прошерстить доку на предмет поведения основных команд и ограничений самой монги https://docs.mongodb.com/manual/reference/limits/
Anonymous
№2Coder
Я новичок. У меня есть категория Xbox. Чтобы отобразить список продуктов этой категорий мне нужно через массив прогонять products с запросом findById и пушить эти данные в новый массив?
№2Coder
И когда я добавляю новый продукт у меня будет два запроса. 1) добавление товара с указанием Id категории.2) получаю от результата id товара и добавлю в список products в категорий
№2Coder
Mansur
Привет всем, использую gridFS и официальный драйвер для Golang. Пишу простенький файловый сервис. При загрузке различных типов файлов, заметил особенность, что файлы с расширением .torrent не сохраняются в gridFS (txt, jpg, png, zip, xls, doc сохраняются без проблем), происходит фриз и повисает процесс. Возможно существуют какие-то ограничения? Или искать косяк в драйвере?
yopp
Привет всем, использую gridFS и официальный драйвер для Golang. Пишу простенький файловый сервис. При загрузке различных типов файлов, заметил особенность, что файлы с расширением .torrent не сохраняются в gridFS (txt, jpg, png, zip, xls, doc сохраняются без проблем), происходит фриз и повисает процесс. Возможно существуют какие-то ограничения? Или искать косяк в драйвере?
Вероятнее всего в драйвере. GridFS это набор соглашений как хранить файлы в монге. По сути файлы режутся на куски и складываются в одну коллекцию, а в другой хранятся метаданные