Nick
а какой вообще с этого прок?
Nick
у вас же поля всеравно надо прописывать и они что типизрованы что нет без разницы
Nick
это ж джаваскрипт, определил роль, отправил обрабатыватьяс в отедльный метод, ни тибе необходимости кастовать, ни необходимости првоерять заполненнось
Denis
Ребят. Есть таблица с товарами (условно интернет магазин) у товаров есть тэги Есть роут у меня в апи, который возвращает список товаров, у каждого товара в монге есть поле tags массив его тэгов При запросе можно передать массив тегов, то есть надо отфильтровать товары по тэгам Юзаю mongoose Очень хочется сделать запрос типа goods.find({ tags: [requestArrayTags] })
Denis
И как бы чтобы requestArrayTags работало как «ИЛИ»
Denis
Подскажите плз как это можно изящно сделать?
Denis
То есть и приходит массив тэгов, по которым надо отфильтровать И у каждого товара есть массив его назначенных тэгов
Nick
$in
Nick
это для или
Denis
Спасибо. Буду смотреть
Павел 💻
Есть тут добрые люди, кто может немного помочь с бд?)) там вроде не сложно, но мне как новичку тяжелова то, отпишитесь в лс пожалуйста
Павел 💻
mongodb , запутался с построением схемы юзеров есть 3 вида admin / clien / cleaner , у них есть общие поля (например имя), но я что то запутался в реализауции
Павел 💻
я логику правильно построить не могу, пологаю будет что то вроде этого
Павел 💻
AstraSerg
Добрый вечер. Юзертайп клиент или клинер. А ниже этого что?
Павел 💻
Их лучше хранить как клиент или клинер или есть таблица Юзер с полем типа, а потом по id их связать с клиент и клинер?
Alexey
Добрый день! Каким образом мне просуммировать два массива в нескольких документах по элементам массива, вот сумма одного массива warningsCountArray, каким образом так же просуммировать secArray, кроме как делать еще один aggregate https://play.db-ai.co/m/XNp2jggjhgAB8jUA
Veaceslav
Всем привет. Ребят есть вопрос к вам по выборке из базы. Есть у меня такая структура: {id: "asdfsdf", values: [ {id: "1"}, {id: "2"}, {id: "3"}, ]} Как получить в values только объекты у которых ид равен 1 и 2 ?
Veaceslav
Попробовал уже и так и сяк, но как-то так и не получилось сделать то что было задумано. Заранее спасибо всем кто ответит !
AstraSerg
проще всего сделать unwind values
Veaceslav
Ещё есть идеи как это сделать ?
Nick
и что значит " объекты у которых ид равен 1 и 2"? вам нужен массив с оставшимися элементами?
Dima
всем привет, кто может подсказать, при обновление документа если условия не проходят (то есть не указывается поле которое обновлять), то обновляет весь документ с пустыми значениями, как можно этого избежать и почему это происходит? $qb = $dm->createQueryBuilder(User::class); $qb->updateOne(); $qb->field('UID')->equals('1'); if (array_key_exists('Coins', $data)) { $qb->field('Coins')->set($data['Coins']); } if (array_key_exists('Gems', $data)) { $qb->field('Gems')->set($data['Gems']); } $query = $qb->getQuery(); $query->execute();
Veaceslav
в чем проблема вытащить весь массив?
Мне нужно получить values: [ {id: "1"}, {id: "2"}, ] То есть присылаю массив со значениями которые мне нужно найти и в ответ я жду массив с объектами которые подходят под этот запрос.
Nick
если вы задали этот список, то почему бы вам вообще не делать запрос в бызу, если вам нужны только эти элементы?
AstraSerg
Ещё есть идеи как это сделать ?
Можно так ещё: https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#array-of-embedded-documents
Veaceslav
Можно так ещё: https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#array-of-embedded-documents
Я уже пробовал там, но проблема в том что я получаю весь массив. А мне нужно получить массив ТОЛЬКО с объектами который подходят под запрос.
Veaceslav
https://play.db-ai.co/m/XNrQ3ggjhgAB8jWP
Огромное спасибо ребят, это то что нужно вроде как
yopp
я логику правильно построить не могу, пологаю будет что то вроде этого
если у пользователя может быть несколько ролей то сложить их в массив документов roles и разделять роли по полю type или подобному
Dima
покажите какой запрос генерируется?
{ "type": 5, "multiple": false, "query": { "UID": "1" }, "newObj": { "$set": { "Coins": "1000", "Gems": "500" } } } выходит оно юзает тот же setNewObj но как можно этого избежать?
Veaceslav
https://play.db-ai.co/m/XNrQ3ggjhgAB8jWP
Я правильно понима что это нужно делать так: AttributeModel.aggregate([тут код]) ?
Veaceslav
mongoose
Veaceslav
зависит от вашего драйвера
Помогите плиз чутка, не получаться у меня и все. Как дурак блин, вроде и пример уже есть, а не могу заставить работать и все ... Очень сильно вас прошу.
Veaceslav
ты хочешь чтоб вместо тебя написали код?
Нет конечно, я сам это не приветсвую. Я просто прошу подсказать, тыкнуть куда нужно...
Veaceslav
https://mongoosejs.com/docs/api.html#aggregate_Aggregate
Вроде так же все делаю, но что не так, не могу понять ...
yopp
а что не получается-то?
Veaceslav
а что не получается-то?
выводит values как null
yopp
выводит values как null
так у вас project в поле items
yopp
попробуйте вместо $project использовать $addFields
yopp
если вы хотите сохранить структуру документа
yopp
$project оставляет только перечисленные поля
Dima
используйте dot notation https://docs.mongodb.com/manual/core/document/#document-dot-notation https://docs.mongodb.com/manual/reference/operator/update/set/#set-fields-in-embedded-documents
в документе у меня лежат инты, у меня массив в реквесте приходит, какие то поля могут придти какие то нет и мне нужно сохранить те что пришли, но если это не те поля что есть в документе, то оно обновляет весь документ с пустыми значениями
Dima
на самом деле я уже вроде нашел решение, тестирую
Veaceslav
попробуйте вместо $project использовать $addFields
Очень прошу прошение, но все что вы подсказали я так и не смог заставить работать...
Veaceslav
попробуйте вместо $project использовать $addFields
Вот структура еще раз, может поможет понять лучше. Мне нужно найти все объекты в колекций Attributes в поле values которых есть нужный мне ID. И получить в ответ этот объект Attribute только в values будут уже только те что мы нашли.
Dima
ничего не понятно всё равно
ладно, если не выйдет обьясню подробнее, спасибо
Nick
unwind lookup match group
Veaceslav
так у вас в $filter указан array не $values а $items
$project: { values: { $filter: { input: "$values", as: "item", cond: { $gte: [ "$$item.code", "test" ] } } } } Так правильно ?
yopp
если вы хотите отфильтровать элементы массива $values по полю code, где значение больше или равно «test» то да
yopp
вероятно вы хотите не $gte а $eq
Veaceslav
вероятно вы хотите не $gte а $eq
Да, поправил и теперь есть пустой массив
Veaceslav
Уже что-то. Теперь осталось понять почему они пустые ...
yopp
вероятно потому что нет совпадений
Veaceslav
вероятно потому что нет совпадений
Есть, почему-то я так думаю что я не похожу до attributes.[0].values
Veaceslav
вероятно потому что нет совпадений
Ээээ я тут кое что нашел...
Veaceslav
$addFields: { attributes: { $filter: { input: "$attributes", as: "item", cond: { $eq: [ "$$item._id", "5cd90649a1225224942e9452" ] } } } } При таком запросе, я получил attributes[] в котором есть два объекта "code":"value"
Alexey
Есть, почему-то я так думаю что я не похожу до attributes.[0].values
возможно, вы сравниваете со строкой, а надо с ObjectId() cond: { $eq: [ "$$item._id", ObjectId("5cd90649a1225224942e9452") ] }
Veaceslav
возможно, вы сравниваете со строкой, а надо с ObjectId() cond: { $eq: [ "$$item._id", ObjectId("5cd90649a1225224942e9452") ] }
input: "$attributes.values", нужно было так, как я и думал искал я не по values[] а в attributes[0] не доходя до values
Veaceslav
Сейчас есть вопрос почему у объекта attributes[0] пропадает id ... все остальное есть, а вот id нету ...
Влад
Здраствуйте, как зайти под пользователем которого создал в mysql? очень надо
Влад
попробовать надо было
Влад
может кто то знает
Влад