
XENONIUM
08.03.2018
16:17:46
if flows.find_one({{'id': flowid}, { '$or': [{'settings': {'pin': {'$exists': False}}}, {'settings': {'pin': False}}]}}) is not None:
Что-то не так, ругается
Что-то с этой or связкой...

Yurii
08.03.2018
16:20:18
find_one({'id': flowid, '$or': [{'settings.pin': {'$exists': False}}, {'settings.pin': False}]})

Google

XENONIUM
08.03.2018
16:22:48
Благодарю
А как можно в объекте изменить определенный элемент? У меня методом $SET весь объект перезаписывается

Yurii
08.03.2018
16:31:50
Ну вообще-то должен только само свойство, которое ты передаешь в сет, но надо пример для большей наглядности.

XENONIUM
08.03.2018
16:35:22
Есть в документе объект
{settings:{type:True}}
Затем я выполняю
flows.update_one({условие},{$set:{settings:{pin:True}})
и
type
затирается, то-есть, документ перезаписывается

Vlad
08.03.2018
16:41:25
Попробуй flows.update_one({условие},{$set:{"settings.pin":True}})

XENONIUM
08.03.2018
16:57:27
flows.update_one({'id':flowid},{'$set':{'settings.type':'public'}})
Может баг какой-то
Оказалось, баг. Перезапустил еще раз и заработало. Благодарю

Dimanius851
09.03.2018
13:22:57
ребят
всем привет
я новичек, хочу добавить в схему одно поле price: integer, я сначала хотел писать миграционный скрипт, но потом просто добавил в схему поле и перезапустил сервер и уже у существующих рекордов это поле появилось, это нормально?
ps: mongoose
когда запрашиваешь с сервера показывает price: 0, когда в консоли монги - этого поля нет

Google

Dimanius851
09.03.2018
13:52:29
написал так
db.games.find({}).forEach(game => { game.price = 0; db.games.save(game); })

Nick
09.03.2018
13:55:01
почитайте доки к монгусу по поводу дефолтных значений полей
и да где мемасик?)

Dimanius851
09.03.2018
13:56:01

Nick
09.03.2018
13:56:37
ну так ты добавил его в сехме на сервере, а не в схеме на бд. это те не sql где нужно явно создать колонку в базе
в данном случае пр выборке из базы будет подставлять дефолтное значение для поля которое ты укжешь, если не укажешь то дефолтное для соотв типа
но в само й базе ничего при этом не изменится
а когда начнешь заливать новые данные, то тогда и начнет появляться поле

Dimanius851
09.03.2018
13:58:39
ну а вот скрипт для выполнения в терминале я написал, он же реально добавляет всё?
ну всмысле, я проверил, - да
@yatoba

Nick
09.03.2018
13:59:47
я бы сделал обыный апдейте
про сейв хз если честн

keystr0ke
09.03.2018
14:01:33
я не понимаю вопроса) обнови всю коллекцию по селектору {‘price’:{‘$exists’:False}} и будет как ты ожидаешь

Dimanius851
09.03.2018
14:04:46
ок, спасибо, первый раз просто делаю
ручки дрожат

Nick
09.03.2018
14:07:14
чтоб руки не дрожали делаешь бекап, разворачиваешь на тестовом стенде и играешься там
ну лиил хотя бы просто имитируешь свою базу десятком записей и на них тренишься

Alexandr
09.03.2018
17:26:32
всем привет
комрады, подскажите плз два вопроса
1) где можно качнуть норм видеокурсы на русском по mongodb?

Google

Alexandr
09.03.2018
17:28:13
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
если не лом )

keystr0ke
09.03.2018
17:35:09

Alexandr
09.03.2018
17:37:25

keystr0ke
09.03.2018
17:38:49
не видел никогда на русском ничего такого, разве что отдельные выступления на конференциях, но это уже не курсы

Alexandr
09.03.2018
17:44:51

keystr0ke
09.03.2018
17:45:40
ну вам виднее как делать, приходите к нам еще)

Alexandr
09.03.2018
17:45:54
хорошоу, спасибос _)

keystr0ke
09.03.2018
18:01:28
хорошоу, спасибос _)
для наглядности еще пример
начальная коллекция 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"
}
}
Для вашего примера нужно немного подредактировать

Alexandr
09.03.2018
18:07:18
спасибо, покумекаю..

Котяй Негодяй
10.03.2018
14:14:53
А я же могу отредактировать документ, изменив значение _id?
При соблюдении ограничений индекса, конечно.
Или значение устанавливается навсегда?

yopp
10.03.2018
14:25:13
_id невозможно изменить

Nick
10.03.2018
17:54:13

Леха
10.03.2018
19:05:28
Чувак, Щас вечер субботы. Ты серьезно?

keystr0ke
10.03.2018
19:06:37
Через точку укажи, ты неправильно селектор указываешь, погляди как в документации написано

Google

keystr0ke
10.03.2018
19:07:02
Поле.поле.поле:значение
А не поле:поле:поле

yopp
10.03.2018
20:12:01
Read only на сутки за хамство.

Саня
10.03.2018
20:16:13
Ребята, подскажите пожалуйста.
Вот у меня есть коллекция, в ней документы, в которых в каждом есть два массива айдишников.
Где бы хранить соответствующие названия для этих айдишников? Отдельные коллекции создавать и делать через Mongoose refs?
Ну то есть джоинов же здесь нет.
А мне при запросе соответственно надо показывать именно названия.

keystr0ke
10.03.2018
20:28:25
Либо dbref, либо отдельную коллекцию, да. Джоины в каком-то смысле есть но они тяжёлые очень

Саня
10.03.2018
20:29:11
Просто хранить в массиве не только айдишники, а объекты, в которых в каждом и айди и название — думаю излишек.

keystr0ke
10.03.2018
20:29:51
Почему? Вы же так и будете запрашивать

yopp
10.03.2018
20:30:39

Саня
10.03.2018
20:31:18
Ну они же будут очень сильно дублироваться.
Мультимиллионироваться. =)
Ну то есть если говорить предметно — это массив производственных факторов.

yopp
10.03.2018
20:31:50
[{_id: oid, name: ”foo"},..., {}]

Саня
10.03.2018
20:32:10

yopp
10.03.2018
20:32:36
Это единственное что будет разумно
Сколько у вас документов?

Саня
10.03.2018
20:32:55
Порядка 300.

Google

Саня
10.03.2018
20:33:07
И в массивах будет по 5-10 документов.

keystr0ke
10.03.2018
20:33:13
Это мало, никакого излишки не будет

Саня
10.03.2018
20:33:25
Ну с точки зрения логики я имею ввиду.

yopp
10.03.2018
20:33:35
Make it work, make it right, make it fast