
yopp
01.09.2018
13:26:46
это уникальный идентификатор документа
collection.updateOne(eq("_id", user_id),
new Document("$set",
.append("first_name", first_name)
.append("last_name", last_name)
.append("username", username)
.append("Formatting", format)
.append("Sound notifications", sound)
.append("View links", view))
);
и в $set не добавляйте _id. это поле невозможно изменить
плюс постарайтесь не использовать ключи с пробелами и разным регистром

Google

yopp
01.09.2018
13:32:19
Stable: 4.0.2 (Aug 29, 2018) Bugfix: 3.6.7 (Aug 25, 2018), Legacy: 3.4.16 (Jul 10, 2018)
MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf
4.0.2: https://docs.mongodb.com/manual/release-notes/4.0/#aug-29-2018
3.6.7: https://docs.mongodb.com/manual/release-notes/3.6/#aug-25-2018
3.4.16: https://docs.mongodb.com/manual/release-notes/3.4/#jul-10-2018
3.2.20: https://docs.mongodb.com/manual/release-notes/3.2/#may-10-2018 (End of life: September 2018)
3.0.15: Support ended February 2018 (Last release May, 2015)

Nan0
01.09.2018
13:33:28
я просто не пойму, что не так с оформлением

yopp
01.09.2018
13:33:43
первый аргумент в updateOne это условие, по которому надо найти документ для изменения
если вы знаете _id, используйте его там
второй аргумент — трансформации документа
вам туда нужно вставить поля которые вы хотите изменить
Прочитайте разделы Introduction и CRUD
https://docs.mongodb.com/manual/introduction/
https://docs.mongodb.com/manual/crud/
там чтива на полчаса

invzbl3
01.09.2018
23:38:05

yopp
01.09.2018
23:39:00
если вы обновляете несколько полей в одном документе, то эффективнее это делать одним запросом

invzbl3
01.09.2018
23:39:50
то есть полностью я прописал так:
collection.updateOne(eq("_id", user_id), new Document("$set", new Document("Formatting", format)));
collection.updateOne(eq("_id", user_id), new Document("$set", new Document("Sound notifications", sound)));
collection.updateOne(eq("_id", user_id), new Document("$set", new Document("View links", view)));

yopp
01.09.2018
23:39:51
во второй документ со списком модификауиы, в ключ $set вы можете добавить больше одного поля
collection.updateOne(eq("_id", user_id),
new Document("$set",
new Document("Formatting", format),
new Document("Sound notifications", sound),
new Document("View links", view)
)
);

Google

yopp
01.09.2018
23:42:05
тьфу
там append
collection.updateOne(eq("_id", user_id),
new Document("$set",
new Document()
.append("Formatting", format)
.append("Sound notifications", sound)
.append("View links", view)
)
);
я плохо на java говорю

invzbl3
01.09.2018
23:44:43
да-да, получилось так
collection.updateOne(eq("_id", user_id), new Document("$set", new Document("Formatting", format).append("Sound notifications", sound).append("View links", view)));

yopp
01.09.2018
23:45:53
?

invzbl3
01.09.2018
23:45:57
еще раз, спасибо

Denys
02.09.2018
13:36:38
всем привет, подскажите пожалуйста, с монго работаю неделю) ловлю ошибку при npm run start:
при npm run start:dev все отлично

AstraSerg
02.09.2018
13:38:53
Что это за $ между чеклутлист и актив?

Denys
02.09.2018
13:42:28
в интернете нашел)

Игорь
02.09.2018
13:42:29

AstraSerg
02.09.2018
13:43:14

Denys
02.09.2018
13:44:12
мне приходят данные и надо обновить их в обьекте)

AstraSerg
02.09.2018
13:44:41
А ну так просто уберите $
Все ключи через точку
В смысле вложенность. Почитайте про дот-нотацию

Denys
02.09.2018
13:46:54
...,
checkoutList: [
{
...,
active: false
}
] такая вложенность получается
из-за того, что чекаут лист массив, я и нашел, что надо ставить доллар
ну вот, то что пишут за дот нотацию

Google

Denys
02.09.2018
14:27:43
не находит
и ошибок нету
подскажите, пожалуйста
https://docs.mongodb.com/manual/reference/operator/update/positional/#negations
вот откуда доллар, но почему он работатет в дев режиме, а в продакшен нет??!!

AstraSerg
02.09.2018
16:23:36
Извините, не у компа сейчас

Banschikov
03.09.2018
06:12:27
Всем привет! Подскажите в монге есть какие то подключения к реплика сетам?

Dmitry
03.09.2018
06:21:08
Какие-то есть. Как-то подключаются

Banschikov
03.09.2018
06:24:47
кокретнее в чем вопрос/задача?
У меня несколько сервисов, который подключается к монге и имеют свои базы данных в монге. Ипользуется коннектор motor для подключения. При подключении указывается хост, порт, юзер, база и имя репликасета. В итоге все сервисы конектятся к нужному репликасету, а вот один сервис конектится к слейву, и при попытки записать данные в базу, выдает ошибку, связанную с тем что он не может записать данные в слейв.
Немогу понять в чем дело

Dmitry
03.09.2018
06:28:10
из таких сопосбов)))... взять и с равнить подключения. Найти в чем разница. Дедовский "метод деления пополам"

Constantin
03.09.2018
06:31:04

AstraSerg
03.09.2018
06:32:18
@denyasmail а пробовали использовать uri для подключения? Там, кроме всего остального, можно указать все ноды реплики

Banschikov
03.09.2018
06:34:21
А можете connection string показать?
async def set_mongodb_connection(app: Application, _: Context, loop: BaseEventLoop):
client = motor.motor_asyncio.AsyncIOMotorClient(
app.config.MONGODB_HOST,
app.config.MONGODB_PORT,
username=app.config.MONGODB_USER,
password=app.config.MONGODB_PASS,
authSource=app.config.MONGODB_DBASE,
replicaset=app.config.MONGODB_REPLICASET_NAME,

Admin
ERROR: S client not available

Constantin
03.09.2018
07:06:54
async def set_mongodb_connection(app: Application, _: Context, loop: BaseEventLoop):
client = motor.motor_asyncio.AsyncIOMotorClient(
app.config.MONGODB_HOST,
app.config.MONGODB_PORT,
username=app.config.MONGODB_USER,
password=app.config.MONGODB_PASS,
authSource=app.config.MONGODB_DBASE,
replicaset=app.config.MONGODB_REPLICASET_NAME,
В хостах у вас указаны все состовляющие репликасета?
Я не очень хорошо пишу на питоне, и не пользовался motor, но чтобы корректно работать с репликасетом нужно все узлы указать. Возможно у вашего «больного» сервиса не все указаны.

Google

Banschikov
03.09.2018
07:39:22

Геннадий
03.09.2018
10:36:14
Привет! Подскажите, как индексы правильно сделать. Чего-то доку прочитал, но не до конца понял. Делаю .find({a: 1, b: 2}).sort({c:1}). То есть выбор по атрибутам a и b, сортировка по c. Я правильно понял, что делать надо один индекс на a и b, а ещё один на c?
А, ещё вот частный случай: .find({a: 1, b: 1}.sort({b:1}), теперь сортировка по ключу, который входит в первый индекс. По логике тоже надо сделать один индекс на a и b и ещё один просто на b. Правильно рассуждаю?

AstraSerg
03.09.2018
10:50:13

Геннадий
03.09.2018
10:50:36
Понял, спасибо.

AstraSerg
03.09.2018
10:51:54
проверить просто: db.collection.explain().find({a: 1, b: 2}).sort({c:1}) смотрите что би не было collscan
ну и желательно что бы количесвто сканированнх докуметов было 0 (https://docs.mongodb.com/manual/core/query-optimization/#covered-query)

Vova
03.09.2018
11:21:06
Кто работает с монгой на языке C# через официальный драйвер, если мне нужно два поля в equals фильтр положить, как можно сделать кроме использования BsonDocument?
Users.Find(Builders<User>.Filter.Eq("_id", model.PhoneNumber).Eq("Password", model.Password))
Так пытался через билдер сделать, но на второй Eq метод оно ругается (а, например, у Builders<>.Update такой проблемы нет, там можно к примеру несколько Set() подряд вызывать)

ExM
03.09.2018
11:42:22
Users.Find(Builders<User>.Filter.Eq("_id", model.PhoneNumber) & Builders<User>.Filter.Eq("Password", model.Password))
или используй Where
Users.Find(Builders<User>.Filter.Where(_ => _.Id == model.PhoneNumber && _.Password == model.Password))
это даст строгую типизацию

Vova
03.09.2018
12:23:47

ExM
03.09.2018
12:31:23

Vova
03.09.2018
12:31:49

ExM
03.09.2018
12:33:14
На стороне клиента будет потрачено некоторое малое время на разбор Expression. Но строгая типизация запроса в разработке, как мне кажется, важнее.

CFFTRP
03.09.2018
12:47:46
Ребят, привет, подскажите, как отдавать по ajax CSV данные ?
например, пользователь для экселя хочет получить данные. Фильтры и прочее отправляется в urle
Не хотелось бы на JS каждый объект коллекции сортировать) Монгой бы это как-то

AstraSerg
03.09.2018
12:48:28

CFFTRP
03.09.2018
12:48:44
если быть точнее)

AstraSerg
03.09.2018
12:49:16

Google

CFFTRP
03.09.2018
12:49:43

AstraSerg
03.09.2018
12:50:29
https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/#examples

Grigory
03.09.2018
16:16:25
Всем привет!
Работал кто с Google BigQuery?
Нужна помощь с составлением запросов не бесплатная)