yopp
И другие запросы не увидят промежуточной версии документа
yopp
bulkWrite вам вообще никаких гарантий не даёт.
yopp
Это просто механизм оптимизации передачи нескольких insert
yopp
Он работает по принципу «что мог, то вставил»
yopp
И если он сломается где-то, вы скорее всего даже не узнаете что он конкретно вставил
yopp
Пока не прочитаете
Konstantin
Понимаю, решение вообще им не пользоваться? Кидать всё через for await of отдельными квери?
yopp
Я не могу вам ничего про ваш драйвер сказать.
Konstantin
Не, я концептуально
yopp
Если к практической задаче перейдете, будет проще
Konstantin
Просто не пользоваться bulkWrite и писать всё через обычные инсерты с лупами по значениям для квери этих апдейтов / инсертов вижу решение
yopp
Я не вижу :) потому что не понимаю что вы хотите сделать
Konstantin
Я не вижу :) потому что не понимаю что вы хотите сделать
Говорил же, не конкретный случай, хочу точно понять как действует драйвер в разных ситуациях)
Konstantin
А как действут writeConcern? Что именно он означает?
yopp
А как действут writeConcern? Что именно он означает?
https://docs.mongodb.com/manual/reference/write-concern/
agic
разобрался и вы были правы
agic
суть в том что я подключаюсь к чужой базе не своей локальной и мне незивестно как туда ложат
agic
суть в том что монго в gte смотрит на таймзону
agic
эти веселые ребята ложат таймзону UTC а время там moscow
agic
my $now2 = DateTime->now( time_zone => 'UTC' )->add(hours => 3)->subtract(minutes => 15)
agic
вот так получается чтобы работало
Nick
вообще монга внутри работает с датами только в UTC виде. Хранение таймзон - это отдельная задача
agic
ну скажем не знал
Nick
и еще один момент дял понимания, сама монга не преобразует времена, это делается на стороен приложения, либо в нем самом либо драйвером
agic
так и ложить надо в UTC а не в local
Nick
да, этот момент при работе с монгой нужно явно отображатсья в доках описания структуры данных БД
agic
без указания тайм зоны со смещением тоже не работает
agic
а то получается вот такой костыль для работы
agic
потому что люди ложать в локал тайм
agic
так какой это канал ) вообще перл очень медленно работает с монгой( питон побыстрее будет
Nick
скорее всего они не вкурсе что драйвер возьмет их локальное как UTC и отбросит таймзону
agic
вот что мне прислали
agic
как ложат время
agic
insert_one ({answer=> \@rjson, date => DateTime::Tiny->now});
agic
они не парились )
Nick
жаль еще не завезли функции для инкремента/декремента дат, а то можно было бы поправить содержимое
yopp
Разве inc по дате не работает?
Nick
может на 3.4 не завезли
Nick
но перед тем как написать првоерил
Nick
аж самому интересно стало могет или нет
Nick
мне выдало что только для числовых типов поддерживается
Nick
если есть 3.6 в наличии попробуй
Nick
Cannot apply $inc to a value of non-numeric type. {_id: ObjectId('5b0d5a265eff4cca81d4e003')} has the field 'ddd' of non-numeric type date
Nick
{ "_id" : ObjectId("5b0d5a265eff4cca81d4e003"), "ddd" : ISODate("2018-05-29T20:19:00.201Z") }
Nick
db.getCollection('t1').update({ "_id" : ObjectId("5b0d5a265eff4cca81d4e003") },{ $inc:{ddd: -1} });
Nick
както так
agic
)
agic
у меня почему то еще монго с перлом ну прямо жестоко грузит проц
agic
я пробывал и так и сяк извращаться не помогает, с питон тоже самое не грузит так
Nick
с перлом не помогу, можно найти репу драйвера и туда ишью накатать, может кто уже сталкивался или это вообще бага
agic
https://stackoverflow.com/questions/41108103/mongodb-high-cpu-usage-long-read-time
Nick
эм, а жрет проц локальная монга или ваша приложуха?
agic
сам перл
agic
локальная монга хз где
agic
сам скрипт довольно тупой
agic
my $users = $client->ns("1.1");
agic
вот кстати ? my $users = $db->get_collection( '1 );
agic
в чем разница ? судя по доке ns легче, а по факту никакой разницы вообще
Nick
это уже какието тонкости языка/драйвера
agic
ну это понятно
agic
я же писал выше на питоне нагрузка меньше...
Nick
скорее всего ns занимается обычным резолвом нйемспейса, т.е. берт само бд, потом ищет коллеккцию там. во втором случае вы самостоятельно берете конкретную бд и там уже конкретную коллекцию. эти методы не могу отличаться, разве что только доп строчкой кода
yopp
Не никакого «резолва». В команде протокола просто есть поле ns, которое по соглашению состоит из строки с точкой, где левая часть имя базы, правая часть имя коллекции.
yopp
https://docs.mongodb.com/manual/reference/mongodb-wire-protocol/
Vlad
Привет всем, можете сказать какими веб-мордами пользуетесь для монги? Есть аналоги pma?
Vlad
Пользователи слишком привыкли к гуям.
SvPupok
эм. а пользователи напрямки в БД лезут?
Vlad
Да, часть имеют прямой доступ к отдельным инсталяциям
Viktor
доброго времени суток, а можно ли сейчас в монге сделать case-insensetive поиск и сортировку по строкам без доп. поля? читаю https://docs.mongodb.com/manual/reference/collation/, но не нравится, что нужно обязательно collation указывать, есть какие-то еще варианты или можно как-нибудь указывать дефолтный collation для запросов?
Viktor
@dd_bb есть бестпрактисы какие-нибудь? ^
A
Привет всем, такой вопрос, хочу обновить одну строку у большого количества документов на основании массив айдишников($in) { status: 'cancelled', orderIds: [ '20180529822092398', '201805292068719183', '20180529920032257' ] } Выглядят входные данные примерно так
A
Одна запись в монге выглядит в свою очередь так
A
return mongo.loadConnection().then((db) => { return db.collection('AccountsOrders').update({ 'orders.id': {$in: data.orderIds}, }, {$set: {'orders.$.state': data.status}}, {multi: true}); }); Обновляю я вот так, но проблема в том, что статус проставляется только для первого объекта из массива ордеров
A
а на остальные он забивает