yopp
У монгуса не самое удобное API, но если принять все недостатки populate, то жить можно
Shokhboz
Есть альтернатива для mongoose?
Fenicu
сомнительная у вас конфа
Fenicu
есть нож для рыбы, есть нож для мяса, батл ножей
Richard
ребят, подскажите пожалуйста, через валидацию можно ли как-либо добавить проверку на уникальность поля в коллекции? предполагаю, что можно как-то через $expr сделать, но не смог найти внятных примеров, как его использовать в описании валидатора
Richard
Добавьте уникальный индекс по полю
а нет какого-то способа проверять через валидатор? или создание индекса — единственно верное решение?
Nick
а нет какого-то способа проверять через валидатор? или создание индекса — единственно верное решение?
Не знаю какие валидаторы имеются ввиду, но либо проверки в транзакции с локами, либо уникальный индекс. Индекс делать в любом случае, иеаче все медленно будет. Поэтому можно сделать его уникальным и не заморачиваться
Richard
Не знаю какие валидаторы имеются ввиду, но либо проверки в транзакции с локами, либо уникальный индекс. Индекс делать в любом случае, иеаче все медленно будет. Поэтому можно сделать его уникальным и не заморачиваться
а, действительно ведь без индексирования проверка на уникальность будет медленее... да, звучит похоже на правду, спасибо! валидатор имеется в виду который прикрепляется к методу создания коллекции, который может проверять, например, схему документа
Taras
всем привет я чего-то не понимаю, что почему на официальном сайте The MongoDB Database Tools попросту отсутствует msi-файл, хотя в гайде пишет его скачать?
Taras
можете подсказать, почему при дампе ремоте базы происходит ничего? Консоль отрабатывает команду без каких-либо сообщений об ошибке аналогичная команда с локальной бд делает дамп, а тут просто пусто
Dmitry
Всем привет! Есть коллекция, у каждого элемента коллекции есть массив операций, у каждой операции есть дата, можно ли как-то отфильтровать коллекцию по дате, чтобы каждая дата из массива операций была больше переданной? Пробовал такой вариант: operations.date: {$gte: <date>} Но он возвращает элемент коллекции, если хотя бы одна операция подошла под это условие, а мне нужно, чтобы обязательно каждая подошла
Shokhboz
Если Operations это отдельная Схема то можно так: Operations.find({data: {$gte: <date>}})
Shokhboz
Ну Представим так: Collection > operations : List<Object> > date
Shokhboz
Если случай такое то: Collection.find( { operations: { $elemMatch: { date: { $gte: <date> } } } )
Shokhboz
Вот и на Stackoverflow: https://stackoverflow.com/questions/50648045/query-for-matching-dates-within-array
Dmitry
Если случай такое то: Collection.find( { operations: { $elemMatch: { date: { $gte: <date> } } } )
Такой вариант тоже пробовал, не работает:( Так же берёт элемент коллекции, если хотя бы у одной из операций дата подходит под условие
Dmitry
Причем в оф. доке есть пример, где это работает должным образом: https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ Но работает оно только для выражения $ne, для остальных выражений($eq, $gte) так же считает элемент коллекции подходящим, если хотя бы одна из его операций подходит под условие
Андрей
Привет. Товарищи, есть кто мониторит монги заббиксом? У меня происходит следующая лабуда при разных версиях баз, включая и старые ветки 3.2.*, 3.4.* и вплоть до 4.2.1: [Mongo] Cannot fetch data: read tcp ip_addr:47030->ip_addr:27017: i/o timeout. Борол ли кто-то или есть идеи как можно побороть?
radmir
Всем привет, если использовать count() с фильтром, БД будет по всем документам проходиться или это как-то оптимизируется?
yopp
если нет, то collscan
yopp
Причем в оф. доке есть пример, где это работает должным образом: https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ Но работает оно только для выражения $ne, для остальных выражений($eq, $gte) так же считает элемент коллекции подходящим, если хотя бы одна из его операций подходит под условие
elemMatch в фильтре нужен чтоб вернуть документы совпадающие с фильтром. Если вы хотите отфильтровать часть документа, то вам нужна проекция. В частности второй $elemMatch: https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/
Dmitry
elemMatch в фильтре нужен чтоб вернуть документы совпадающие с фильтром. Если вы хотите отфильтровать часть документа, то вам нужна проекция. В частности второй $elemMatch: https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/
Я не хочу отфильтровать часть документа, я хочу получить документ, только если дата каждого элемента массива, который есть в этом документе, больше чем та, которую передал
yopp
https://docs.mongodb.com/manual/reference/operator/query/all/#use--all-with--elemmatch ?
Антон
подскажите, пожалуйста, почему запрос количества записей может выполнятся в 100500 раз дольше запроса самих данных? в базе около 20к записей. сам запрос на данные с лимитов 20 шт. мгновенно отрабатывает. а $count считает прям 2-3 секунды это дело [ { '$match': {} }, { '$project': { model_id: 1, _id: 1 } }, { '$lookup': { from: 'models', localField: 'model_id', foreignField: '_id', as: 'model_details' } }, { '$match': { 'model_details.profile.age': '19' } }, { '$count': 'total_count' } ]
victor
Товарищи, подскажите, пожалуйста, если у меня в авс умрет регион в котором определенная часть шардов (shard = active+passive mongodb instances) кластера находится, то стало быть, данные с этих кластеров станут недоступны, верно?
victor
каджись нашёл ответ на свой вопрос https://developer.mongodb.com/images/aa3.png
victor
the shards are configured so that each shard has at least one replica (copy of the data) in each of the datacenters.
Александр
добрый вечер. Подскажите пожалуйста, почему не могу добавить пользователя в массив string ?
Александр
еще один вопрос. Почему во всех controllers я писал Remove . а теперь он требует с deleteOne, который не работает ?
Viktar
еще один вопрос. Почему во всех controllers я писал Remove . а теперь он требует с deleteOne, который не работает ?
Он не требует, а сообщает, что ремув помечен как депрекейтед. Используйте делитОне
Viktar
Это варнинг. А не еррор. Но мой совет - прислушайтесь.
Александр
Подскажите, почему через push не могу добавить в массив элемент ?
Александр
с Pull сработало все по _id
Viktar
Пуш если я не ошибаюсь хочет на вход массив
Viktar
Ошибаюсь
Viktar
https://docs.mongodb.com/manual/reference/operator/update/push/
Александр
Viktar
Я тут вам не подскажу. Я использую запросы в консоле + питон
Viktar
по примеру делаю
В примере запрос из консоли. Он отрабатывает правильно.
Александр
Странно, что можно только документ удалить по Id, а не элемент в managers , мб я не знаю способа. Я и сделал это поле "name", чтобы удалить по id, а не искать совпадение и тд . Получается в пустую так, как по Id не могу удалить элемент "name"
Dmitry
https://docs.mongodb.com/manual/reference/operator/query/all/#use--all-with--elemmatch ?
Тоже нет:( Возвращает элемент коллекции, если хотя бы одна из его операций подошла
Александр
Подскажите пожалуйста, как правильно сделать ... Есть у меня массив managers было, например 3 объекта - удалил 2 и 3 элемент - удаляю последний элемент, массив пустой Как удалить весь документ, если массив managers пустой ? В конце сделать проверку или в mongoose можно сделать какое-то условие ?
Taras
а есть какой-либо способ сделать дамп ремоте дб окромя как через строку? А то у меня через строку происходит ровным счетом ничего например в Intellij IDEA к бд подключиться это секундное дело к любой дб, но сделать бекап можно только Постгрес SQL и MySQL для mssql (будь она проклята) надо качать их менеджер студию
yopp
Тоже нет:( Возвращает элемент коллекции, если хотя бы одна из его операций подошла
положите пожалуйста пример запроса на плейграунд, может быть я не понимаю вашу задачу https://mongoplayground.net
yopp
$size == 0
Антон
посмотрите что в explain(‘executionStats’), поставив его перед count. в целом, вам будет эффективнее сначала отфильтровать model по profile.age = 19 и уже потом делать $lookup. иначе в той коллекции, в которой вы делаете этот запрос из-за $match: {} у вас будет полное сканирование
там полное сканирование что с $match: {} , что без. в explain пишет, что без кэша и перебирает 20к записей... решил разделение на 2 запроса - сначала отфильтровать модели, потом видео. Но это бред... Оно стало во много раз быстрее. Но почему сама база такое не умеет...
Taras
а как вы делаете резервную копию?
я на проекте неделю и не особо понимаю, есть вероятность что вообще никак у меня есть только строка, через которую я подключился,
Alexander
Коллеги, всем привет, подскажите пожалуйста как мне сделать update для названий, чтобы 1-я буква слова была заглавной? вот, начитался в инете и это не работает db.collection.find({"type": "PREDMET"}){ db.collection.update( { "_id": doc._id }, { "$set": { "name": doc.name.toUpperCase() } } ); }); в коллекции collection есть предметы - predmet и животные - animal, у предметов есть названия - name, как все name у предметов сделать с заглавной буквы?
Dmitry
положите пожалуйста пример запроса на плейграунд, может быть я не понимаю вашу задачу https://mongoplayground.net
https://mongoplayground.net/p/ooXvmf4gbnH Результат, который хочется получить: Вернется только документ с key: 2 потому что у него все операции датированы позднее, чем переденная дата
Alexander
сначала надо будет составить агрегацию, которая с помощью $substr и упомянутого апперкейса будет делать первую букву звглавной. Потом загнать эту агрегацию в апдейт https://docs.mongodb.com/manual/tutorial/update-documents-with-aggregation-pipeline/
Прошу прощения, где-то допускаю простую ошибку, и не могу понять где, не могли бы вы подсказать db.collection.aggregate({"type": "predmet"}, [ { $project: { "$toUpper": { $substr: [ "$name", 0, 1 ] } } } ] )
Roman
как обновить обект с бд ?
Roman
типо есть у меня обект и я хочу данные обновить внём с бд
Viktar
типо есть у меня обект и я хочу данные обновить внём с бд
Вопрос очень не понятен. Попробуйте дать больше деталей
Anonymous
How to connect mongodb with vs code flutter?
Anonymous
Free
Anonymous
Как подключить mongodb к vs code flutter?
Roman
await UserSchema.updateMany({}, { $pull: { subscribers: job._id } }, { multi: true });не могу удалить ид обекта с масива что делаю не так ?
A
/Епрра мгыфса ыч
Shokhboz
Привет ребята. Хочу имплементировать mongoose virtual с many-to-many relationship. Я видел что можно one-to-one, one-to-many c virtuals.