@MongoDBRussian

Страница 297 из 342
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
первый аргумент в updateOne это условие, по которому надо найти документ для изменения
спасибо за Вам за уточнения по док-е, наконец разобрался с проблемой. нужно было по отдельности просто каждое условие поля прописать и что модифицировать, таким образом: collection.updateOne(eq("_id", user_id), new Document("$set", new Document("Formatting", format)));

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
в интернете нашел)

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
Извините, не у компа сейчас

https://docs.mongodb.com/manual/reference/operator/update/positional/#negations вот откуда доллар, но почему он работатет в дев режиме, а в продакшен нет??!!
Сделайте следующее: добавьте принты в код прода и дева, что бы увидеть конечные запросы к монге. Попробуйте выполнить их через mongo shell https://docs.mongodb.com/manual/mongo/

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

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

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

Немогу понять в чем дело

Constantin
03.09.2018
06:31:04
Немогу понять в чем дело
А можете connection string показать?

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
Геннадий
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. Правильно рассуждаю?

Геннадий
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
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)) это даст строгую типизацию
Спасибо. А ещё вопрос, FilterDefinition быстрее за Expression будет? По идее же при Expression сначала все данные выгружаются из бд и потом идёт сравнение?

Vova
03.09.2018
12:31:49
Where разбирает Expression и рендерит запрос в БД.
А, то есть разницы в производительности никакой?

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
ну да. Mongoose )
ок, и что у вас с монгой не получается/хочется сделать?

Google
CFFTRP
03.09.2018
12:49:43
ок, и что у вас с монгой не получается/хочется сделать?
ну, собственно, как лучше преобразовать данные в плоские? CSV ? В какую сторону копать?

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?

Нужна помощь с составлением запросов не бесплатная)

Страница 297 из 342