Исмаил
вот что компас показывает про индексы этой коллекции
Исмаил
в другие коллекции создает нормально
Исмаил
а все, это ктото другой добавил оказывается
Исмаил
Semyon V
Здравствуйте, вопрос по агрегациям.
Есть коллекция с записями А, где хранится служебная информация и userId.
Есть коллекция с записями Б, где хранятся _id коллекции A и userId.
По сути коллекция Б - статус просмотренности записей пользователем.
Задача: для заданного пользователя вывести только такие записи из коллекции А, в которых не найдено соотвествия в коллекции Б, тобишь ещё не просмотренные записи.
Nick
Semyon V
Semyon V
а возможно ли как-то используя $project оставить исходный документ и трансформировать только одно поле в нём?
Askhat
Никита
Askhat
Askhat
Скоро буду мультирегиональную бд делать и с серверами ту же историю
Дамир
Всем привет.
Небольшой вопрос, я щас хочу написать миграцию. И у меня есть коллекция записей у которой такая структура:
{
id: 1, data: [{ a: 1},{ a: 2} ...{ a: 10}]
}
И есть массив, который нужно обновить, ну или добавить новые параметры.
var dataB = [{b:1}, ... {b:10}]
Чтобы получилось:
id: 1, data: [{ a: 1, b:1},{ a: 2, b:2} ...{ a: 10, b:10}]
реально это как то одним запросом сделать?
Anton
пожалуйста подскажите, могут ли в репликасете ноды быть разной версии 3.6.10 и 3.6.13 к примеру?
AstraSerg
AstraSerg
именно так и проходит онобвление
Anton
именно потому и спрашиваю :)
Anton
спасибо большое
Дамир
Народ , подскажите пожалуйста, использую монгуст и хочу найти все записи. Вот только когда я этот код запускаю, у меня появляется новая коллекция itemscopies
Почему так?
Коллекция itemCopy изначально есть.
Ilya
item'S'Copy
Nick
Всем привет.
Небольшой вопрос, я щас хочу написать миграцию. И у меня есть коллекция записей у которой такая структура:
{
id: 1, data: [{ a: 1},{ a: 2} ...{ a: 10}]
}
И есть массив, который нужно обновить, ну или добавить новые параметры.
var dataB = [{b:1}, ... {b:10}]
Чтобы получилось:
id: 1, data: [{ a: 1, b:1},{ a: 2, b:2} ...{ a: 10, b:10}]
реально это как то одним запросом сделать?
Нет, вытаскивайте доки мкняйте и сохраняйте
Дамир
Дамир
Ilya
я так понял что у вас данные в itemCopy а в коде у вас itemsCopy
Ilya
разве s не лишняя?
Дамир
нет
Daniil
монгус создает коллекции в монге делая из названия модели (обычно объект в единственном числе) множественное число
Дамир
Я ваще уже ничего не понимаю... щас взял , переименовал коллекцию, в то что он создает и заработало.
Daniil
т.е. модель User монгус создаст коллекцию users
Дамир
ааа
Daniil
соответственно из вашего itemsCopy он создаст itemscopies
Дамир
Daniil
ну вообще вот - https://mongoosejs.com/docs/models.html#compiling
The first argument is the singular name of the collection your model is for. Mongoose automatically looks for the plural, lowercased version of your model name. Thus, for the example above, the model Tank is for the tanks collection in the database.
Дамир
Dan
/spam
Anonymous
Dmitriy
Ребят, подскажите возможно ли получит в результате запроса только элементы массива попадающие под условие.
Т.е. например, есть такой объект
[{type: 1}, {type: 2}, {type: 1}]
Можно ли одним запросом получить только элементы массива у которых type=1? Если возможно, то киньтесь, пожалуйста, ссылкой где почитать куда копать?
AstraSerg
Dmitriy
elemMatch мне выберет документы по условию, но вернёт целиком документ. А мне нужно видимо какой-то агрегейт, чтобы вернулись только элементы массива попавшие в условие
AstraSerg
был ещё способ, но не припомню сейчас. Решение "в лоб" - unwind https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/
yopp
Dmitriy
О, $filter то что надо, спасибо всем!
P
Привет
Я хочу при update в зависимости от значения одного поля поставить значение другого.
Как я понял при update нельзя сделать switch case а аггрегатная функция тут не очень подходит.
Поскольку у меня старая версия монго я пришел к выводу что меня вполне устроит серия update операций.
Вопрос: Как сгенерировать в js вызов update?
Итерируясь по своему словарю соответсвий я вызову нужное количество раз update с правильным условием
Ilya
Здравствуйте, хотел еще раз коснуться темы транзакций, точнее, блокировок. Хотелось бы знать, как конкретно работает блокировка.
Допустим, если в транзакции я использую find(), то монга по блокирует в базе только те документы, которые удовлетворяют условию запроса? То есть если у меня есть 10 документов с полем id = от 0 до 9, и я делаю find({id: {$gt: 5}}) то он заблочит только половину документов, а остальные будут доступны?
Я бы на самом деле выяснил это экспериментальным путем, но я вообще без понятия как это отслеживать.
yopp
Ilya
yopp
в 4.2 будет $merge https://docs.mongodb.com/master/reference/operator/aggregation/merge/ в AF
P
lua бы туда вместо js
yopp
4.0.11 (Jul 26) ◦ 3.6.13 (June 10) ◦ 4.2.0-rc4 (Jul 27)
• Плейграунд для запросов
• Документация
• Официальные курсы по MongoDB
Stable: 4.0.11 ◦ Bugfix: 3.6.13
Legacy: 3.4.22 (Aug 6) ◦ Dev: 4.2.0-rc4 (Jul 27)
End of life: 3.2.21 (Dec ’18), 3.0.15 (May ’17)
yopp
Обновлятесь:
4.0.11 https://docs.mongodb.com/manual/release-notes/4.0/#jul-26-2019
3.4.22 https://docs.mongodb.com/manual/release-notes/3.4/#aug-6-2019
Экспериментируйте:
4.2.0-rc4 https://groups.google.com/forum/#!topic/mongodb-announce/JgA3MxtytPs
Anonymous
Добрый день, подскажите пожалуйста, с помощью каких утилит можно посмотреть загруженность базы, количество открытых соединений, нагрузка цпу итд, буду крайне признателен
Anonymous
просто графану ставить?
yopp
https://docs.mongodb.com/manual/administration/free-monitoring
https://www.percona.com/software/database-tools/percona-monitoring-and-management
Anonymous
благодарю за информацию
Anonymous
AstraSerg
просто графану ставить?
графана только рисует, данный для неё нужно собирать другими сервисами типа прометеуса или statsd
Anonymous
Если ли разница, писать/искать в пустую коллекцию или писать или искать из коллекции, которая набита данными?
λ
Подскажите как при выдаче отфильтровать поле(масив) больше какой-то цифры?
λ
Ну вернуть например { $gte: 100}…
λ
Думал проекцией можно, а нет…
find({}, {myArr: {$gte: 100}})
yopp
Если не опоздаю на самолёт, то до вечера понедельника буду в питере 😂
λ
Unrecognized pipeline stage name: '$filter' 😔
Hallo
Hallo
🤣
λ
{_id: 1, myArr: [1, 10, 100, 1000]},
{_id: 2, myArr: [1, 11, 1002]}
Anton
{_id: 1, myArr: [1, 10, 100, 1000]},
{_id: 2, myArr: [1, 11, 1002]}
db.collection.aggregate([
{
$unwind: '$myArr'
},
{
$match: {
myArr: {
$gte: 100
}
}
},
{
$group: {
_id: '$_id',
myArr: {
$push: '$myArr'
}
}
}
])
Anton
хотя «отфильтровать поле(масив) больше какой-то цифры» можно по-разному понимать
yopp
yopp
λ
Anton
yopp
yopp
Его в $project или в $addFields надо
yopp
yopp
Они не добавляют в пайплайн новых документов
yopp