Nick
Точнее монгодб это отдельно запущенное приложение
Defragmented
Понял, спасибо (надо какое-то слово определить для дб которые требуют отдельного приложения и которые работают просто как библиотека)
Nick
Embedded
Defragmented
и монго не embedded(встроенная) потому что отдельное приложение, правильно понял?
Nick
Оно просто не встраиваемое
Nick
Хотя как всегда можно извращаться и встроить и ее куданить. Код открыт
️lefrotite
if flows.find_one({{'id': flowid}, { '$or': [{'settings': {'pin': {'$exists': False}}}, {'settings': {'pin': False}}]}}) is not None:
️lefrotite
Что-то не так, ругается
️lefrotite
Что-то с этой or связкой...
Yurii
find_one({'id': flowid, '$or': [{'settings.pin': {'$exists': False}}, {'settings.pin': False}]})
️lefrotite
Благодарю
️lefrotite
А как можно в объекте изменить определенный элемент? У меня методом $SET весь объект перезаписывается
Yurii
Ну вообще-то должен только само свойство, которое ты передаешь в сет, но надо пример для большей наглядности.
️lefrotite
Есть в документе объект
{settings:{type:True}}
Затем я выполняю
flows.update_one({условие},{$set:{settings:{pin:True}})
и
type
затирается, то-есть, документ перезаписывается
Vlad
Попробуй flows.update_one({условие},{$set:{"settings.pin":True}})
️lefrotite
flows.update_one({'id':flowid},{'$set':{'settings.type':'public'}})
️lefrotite
Может баг какой-то
️lefrotite
Оказалось, баг. Перезапустил еще раз и заработало. Благодарю
Dmitry
ребят
Dmitry
всем привет
Dmitry
я новичек, хочу добавить в схему одно поле price: integer, я сначала хотел писать миграционный скрипт, но потом просто добавил в схему поле и перезапустил сервер и уже у существующих рекордов это поле появилось, это нормально?
ps: mongoose
Dmitry
когда запрашиваешь с сервера показывает price: 0, когда в консоли монги - этого поля нет
Dmitry
написал так
db.games.find({}).forEach(game => { game.price = 0; db.games.save(game); })
Nick
почитайте доки к монгусу по поводу дефолтных значений полей
Nick
и да где мемасик?)
Dmitry
Nick
ну так ты добавил его в сехме на сервере, а не в схеме на бд. это те не sql где нужно явно создать колонку в базе
Nick
в данном случае пр выборке из базы будет подставлять дефолтное значение для поля которое ты укжешь, если не укажешь то дефолтное для соотв типа
Nick
но в само й базе ничего при этом не изменится
Nick
а когда начнешь заливать новые данные, то тогда и начнет появляться поле
Dmitry
ну а вот скрипт для выполнения в терминале я написал, он же реально добавляет всё?
Dmitry
ну всмысле, я проверил, - да
Dmitry
@yatoba
Nick
я бы сделал обыный апдейте
Nick
про сейв хз если честн
Nickolay
я не понимаю вопроса) обнови всю коллекцию по селектору {‘price’:{‘$exists’:False}} и будет как ты ожидаешь
Dmitry
ок, спасибо, первый раз просто делаю
Dmitry
ручки дрожат
Nick
чтоб руки не дрожали делаешь бекап, разворачиваешь на тестовом стенде и играешься там
Nick
ну лиил хотя бы просто имитируешь свою базу десятком записей и на них тренишься
Anonymous
всем привет
Anonymous
комрады, подскажите плз два вопроса
1) где можно качнуть норм видеокурсы на русском по mongodb?
Anonymous
2) https://ru.stackoverflow.com/questions/794971/%D0%9A%D0%B0%D0%BA-%D0%B2-mongodb-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C-%D0%B4%D0%BE%D1%87%D0%B5%D1%80%D0%BD%D0%B5%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B5-%D0%B2-%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B0%D1%85-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0
Anonymous
если не лом )
Nickolay
Nickolay
не видел никогда на русском ничего такого, разве что отдельные выступления на конференциях, но это уже не курсы
Nickolay
Nickolay
ну вам виднее как делать, приходите к нам еще)
Anonymous
хорошоу, спасибос _)
Nickolay
хорошоу, спасибос _)
для наглядности еще пример
начальная коллекция q:
/* 1 */
{
"_id" : ObjectId("5aa2c9b5faf432cbff0ac65b"),
"a" : {
"b" : "c"
},
"d" : {
"e" : "f"
}
}
набор команд агрегации
db.getCollection('q').aggregate([{'$match':{}}, {'$project':{'a.b':true, 'a.e':'$a.b','_id':true}}, {'$out':'q'}])
После операции агрегации в коллекции q будет:
{
"_id" : ObjectId("5aa2c9b5faf432cbff0ac65b"),
"a" : {
"b" : "c",
"e" : "c"
}
}
Для вашего примера нужно немного подредактировать
Anonymous
спасибо, покумекаю..
Anonymous
А я же могу отредактировать документ, изменив значение _id?
Anonymous
При соблюдении ограничений индекса, конечно.
Anonymous
Или значение устанавливается навсегда?
yopp
_id невозможно изменить
Николаич
Чувак, Щас вечер субботы. Ты серьезно?
Nickolay
Через точку укажи, ты неправильно селектор указываешь, погляди как в документации написано
Nickolay
Поле.поле.поле:значение
Nickolay
А не поле:поле:поле
yopp
Read only на сутки за хамство.
Александр 🌲🙏🏽
Ребята, подскажите пожалуйста.
Александр 🌲🙏🏽
Вот у меня есть коллекция, в ней документы, в которых в каждом есть два массива айдишников.
Александр 🌲🙏🏽
Где бы хранить соответствующие названия для этих айдишников? Отдельные коллекции создавать и делать через Mongoose refs?
Александр 🌲🙏🏽
Ну то есть джоинов же здесь нет.
Александр 🌲🙏🏽
А мне при запросе соответственно надо показывать именно названия.
Nickolay
Либо dbref, либо отдельную коллекцию, да. Джоины в каком-то смысле есть но они тяжёлые очень
Александр 🌲🙏🏽
Просто хранить в массиве не только айдишники, а объекты, в которых в каждом и айди и название — думаю излишек.
Nickolay
Почему? Вы же так и будете запрашивать
yopp
Александр 🌲🙏🏽
Ну они же будут очень сильно дублироваться.
Александр 🌲🙏🏽
Мультимиллионироваться. =)
Александр 🌲🙏🏽
Ну то есть если говорить предметно — это массив производственных факторов.
yopp
[{_id: oid, name: ”foo"},..., {}]