
Pavel ?
12.05.2018
16:12:35

Slava
12.05.2018
16:12:37
у кассандры дорогое чтение, очень

Pavel ?
12.05.2018
16:13:29
какой вердикт?

yopp
12.05.2018
16:14:07
берите то, с чем опыта больше

Google

Pavel ?
12.05.2018
16:14:36
с монгой больше

Slava
12.05.2018
16:15:08
тогда вы сами ответили на вопрос)

yopp
12.05.2018
16:15:22
значит берите её. судя по всему, у вас ещё нет пользовательской базы, так что вам лучше потратить ресурсы на то, чтоб быстрее доставить mvp
и собрать фидбек

Pavel ?
12.05.2018
16:15:55
спасибо)

Egoarka
12.05.2018
21:10:52
не работает compound index в subdocument-массиве
{
bar: String,
foo: [{
a: String,
b: String
}]
}
schema.index({ 'foo.a': 1, 'foo.b': 1 }, { unique: true }}
когда добавляю документ с помощью push/addToSet дубликаты все-равно добавляются
кто знает как решить?

yopp
12.05.2018
22:05:11

Egoarka
12.05.2018
22:14:55
@dd_bb
Mongoose: paper.findAndModify(
{
_id: ObjectId("5af761303e34a19ad48be03e"),
user: ObjectId("5af72a522f2dbc92d7d23c52")
},
[],
{
$setOnInsert: { __v: 0 },
$push: {
rating: {
_id: ObjectId("5af766739f45ec9b136aecd9"),
user: ObjectId("5af72a522f2dbc92d7d23c52"),
reaction: "test"
}
}
},
{ runValidators: true, new: true, upsert: true, remove: false, fields: {} }
);
если правильно понял, то вот
кстати, нашел такой солюшен, он нормальный?
https://github.com/Automattic/mongoose/issues/2226#issuecomment-226634928


yopp
12.05.2018
22:19:44
@dd_bb
Mongoose: paper.findAndModify(
{
_id: ObjectId("5af761303e34a19ad48be03e"),
user: ObjectId("5af72a522f2dbc92d7d23c52")
},
[],
{
$setOnInsert: { __v: 0 },
$push: {
rating: {
_id: ObjectId("5af766739f45ec9b136aecd9"),
user: ObjectId("5af72a522f2dbc92d7d23c52"),
reaction: "test"
}
}
},
{ runValidators: true, new: true, upsert: true, remove: false, fields: {} }
);
если правильно понял, то вот
Нет, нужен аналог вот этого https://docs.mongodb.com/manual/reference/method/cursor.explain/#cursor.explain в вашем дайвере

Egoarka
12.05.2018
22:21:30
ну да, я и скинул отчет выше
какой есть

yopp
12.05.2018
22:24:06

Google

Egoarka
12.05.2018
22:44:32
http://thecodebarbarian.com/whats-new-in-mongoose-4.10-unique-in-arrays.html
еще солюшен
жалко только, что на апдейт не пашет

Vadim
12.05.2018
22:59:21
Есть какой нить учебник по монго для новичков желательно на русском?

Egoarka
12.05.2018
23:00:11
советую сразу взять проект и параллельно решать проблемы, которые возникают

Alexandr
12.05.2018
23:04:51

Egoarka
12.05.2018
23:05:25
ну я и таких чуваков видел, нормально все, фигачили покруче сеньеров
arrayFilters пашет у кого?
у меня для массивов двойной вложенности не пашет
профиксил с помощью явного указания ObjectId

Amir
13.05.2018
06:52:53
хм. а если у меня результат выборки вот такой
[{'out': [{'script': {'name': ['v1']}}, {'script': {'name': ['v2']}}]}]
а мне нужен только массив вида ['v1', 'v2'] - как это реализовать без боли?
собственно сама выборка: find({}, {'_id': 0, 'raw.out.script.name':1})


Max
13.05.2018
10:40:03
вот собственно результат профайлинга пхп драйвера, самое долгое время выполения
[2018-05-11T11:26:29.488486+00:00] mongoc: TRACE > ENTRY: mongoc_server_description_handle_ismaster():493
[2018-05-11T11:26:29.488507+00:00] mongoc: TRACE > EXIT: mongoc_server_description_handle_ismaster():654
[2018-05-11T11:26:29.488519+00:00] mongoc: TRACE > TRACE: mongoc_topology_description_handle_ismaster():1950 Transitioning to RSWithPrimary for RSSecondary
[2018-05-11T11:26:29.488531+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_poll():223
[2018-05-11T11:26:29.488535+00:00] socket: TRACE > ENTRY: mongoc_socket_poll():283
[2018-05-11T11:26:39.487224+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_poll():249
[2018-05-11T11:26:39.487256+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_poll():223
[2018-05-11T11:26:39.487261+00:00] socket: TRACE > ENTRY: mongoc_socket_poll():283
[2018-05-11T11:26:39.487265+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_poll():249
[2018-05-11T11:26:39.487272+00:00] stream: TRACE > ENTRY: mongoc_stream_failed():80
[2018-05-11T11:26:39.487296+00:00] stream: TRACE > ENTRY: mongoc_stream_destroy():104
[2018-05-11T11:26:39.487301+00:00] stream: TRACE > ENTRY: _mongoc_stream_socket_destroy():71
[2018-05-11T11:26:39.487306+00:00] socket: TRACE > ENTRY: mongoc_socket_close():770
[2018-05-11T11:26:39.487324+00:00] socket: TRACE > EXIT: mongoc_socket_close():805
[2018-05-11T11:26:39.487338+00:00] stream: TRACE > EXIT: _mongoc_stream_socket_destroy():82
[2018-05-11T11:26:39.487341+00:00] stream: TRACE > EXIT: mongoc_stream_destroy():112
[2018-05-11T11:26:39.487354+00:00] stream: TRACE > EXIT: mongoc_stream_failed():90
[2018-05-11T11:26:39.487360+00:00] mongoc: TRACE > ENTRY: mongoc_server_description_handle_ismaster():493
[2018-05-11T11:26:39.487364+00:00] mongoc: TRACE > EXIT: mongoc_server_description_handle_ismaster():500
[2018-05-11T11:26:39.487369+00:00] mongoc: TRACE > TRACE: mongoc_topology_description_handle_ismaster():1950 Transitioning to RSWithPrimary for Unknown
задержки по времени только под нагрузкой на запись


Nick
13.05.2018
12:25:57


Amir
13.05.2018
12:28:41

Max
13.05.2018
12:33:34
посмотрите профайлером где тупит пхп

Nick
13.05.2018
13:38:33
сейчас бы форвардить чтобы нельзя было переключиться на исходное сообщее

Max
13.05.2018
13:43:09
https://t.me/MongoDBRussian/24089

Alexandr
13.05.2018
13:56:05
ребята, кто-то пытался монгодб драйвер устанавливать для php?
http://us1.php.net/manual/en/mongodb.installation.manual.php
у меня почемуто на этапе ./configure выдаёт ошибку - просит пакет krb5-gssapi, которого в природе не существует. При чём тут керберос - вообдще хз
configure: error: Package requirements (krb5-gssapi) were not met:
No package 'krb5-gssapi' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables PHP_MONGODB_SASL_CFLAGS
and PHP_MONGODB_SASL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Google

Alexandr
13.05.2018
13:57:25
помогите плз если кто понимает

Liv
13.05.2018
19:41:05
привет, есть тут бдящие? :)
вопрос повышенной сложности: с помощью чего я могу пройти по всем документам в коллекции и собрать среднее арифметическое значений конкретных полей?

Fozilbek
13.05.2018
19:57:18
Если да то aggregate вам нужн

Liv
13.05.2018
19:58:33
да, хочу, к примеру, определить среднюю зарплату сотрудников. Мне для этого через aggregate нужно получить сумму зарплат, а потом разделить на кол-во записей? Или там как-то все изящно делается?

Fozilbek
13.05.2018
19:58:46
aggregate $group $avg

Liv
13.05.2018
19:59:47
ок, спс, пошел копаться

Fozilbek
13.05.2018
20:00:31
Нзч.

Liv
13.05.2018
20:18:06
а есть какая-то возможность округления расчитанных значений? что-то типа
db.employees.aggregate([
{$group: {_id: 0, avgSalary: Math.round({$avg: "$salary"})}}
])
?

Nikita
13.05.2018
21:14:30
а можно самому генерировать ID на клиенте для записи в бд ?)

yopp
13.05.2018
21:57:01

Liv
13.05.2018
21:59:54
не, не подходит. Я хотел округление с указанной точностью, похоже, что такого нет

yopp
13.05.2018
22:01:20
Или кщё лучше, не храните больше никогда деньги во флоатах

Liv
13.05.2018
22:02:52
хм, ну деньги-то в интах хранятся, а вот среднее получается дробным, это да

yopp
13.05.2018
22:02:57
Этого не категорически нельзя делать, у вас могу существенные ошибки в расчётах

Liv
13.05.2018
22:03:47
так и сделал, спасибо :)

Google

yopp
13.05.2018
22:07:43
Ну или если у вас есть возможность со стороны драйверов и монга 3.4+, то перейдите на BigDecimal
https://docs.mongodb.com/manual/tutorial/model-monetary-data/

Liv
13.05.2018
22:27:31
еще 1 нубский вопрос: с помощью чего я могу найти самую раннюю (по дате) статью в указанной категории например?

yopp
13.05.2018
23:20:58
В запросе фильтр по атрибуту категории и сортировка по дате по возврастанию. Первая запись и будет самой ранней

Max
14.05.2018
09:39:33
для истории ...
проблему решили
в проблеме участвовали
- реплика из 2-х mongod и одного арбитра версии 3.6.4
- приложение на пхп с драйвером mongodb 1.4.3
- нагрузка 1,5 К записей в монгу в минуту
Арбитр был закрыт фаерволом от всех кроме mongod. Открыли арбитр для пхп и пхп перестал тупить ... ?
привет. возможно не совсем по теме .. кто то сталкивался с ситуацией на пхп, когда подключение только к мастеру, запись 1,5к/мин документов отдельными запросами проходит нормально. А вот когда в конекшин стринг появляется слэйв - пхп начинает дико тупить
драйвер установлен последний, монга 3,6

vitalii
14.05.2018
09:45:43
можно вопрос , почему avg_age в ceil не находит , как я понял , агрегацию можно делать подряд
db.getCollection('binaryAcademy').aggregate([{$group : {_id:null,avg_age : {$avg : "$age"}}},{ $ceil: avg_age}]);

Nick
14.05.2018
09:47:11

Max
14.05.2018
09:48:37
нет, со слейва тоже доступен

Mikhail
14.05.2018
10:11:24
А в чем разница между update и updateOne?
По доке они одинаковы как бы

Artem
14.05.2018
10:15:41
Я так понимаю, что если под условие обновления попадает несколько документов, то в случае updateOne() обновится просто первый документ.

Nick
14.05.2018
10:17:35
видимо доку невнимательно читаете

Алексей
14.05.2018
11:24:04
Коллеги а почему монга не ставит на базу по умолчанию 0700 а оставляет дефолтные странные для бд 0755 ? в этом есть какая то логика или тупо прожужали ?

yopp
14.05.2018
11:26:28

Алексей
14.05.2018
11:26:41
конечно ос ставит.
но почему они так оставляют ?

yopp
14.05.2018
11:27:23
Думаю ты хорошо угадал второй вариант :)
Кстати 0700 плохие права. Я бы группе оставил чтение
Чтоб обслуживающее ПО не под монговским пользователем бегало

Алексей
14.05.2018
11:29:54
ну ага.

Google

yopp
14.05.2018
11:31:03
Посмотри в жире, там скорее всего с 1.8 лежит незакрытый ишшуй на эту тему ;) лайкни и бампни его своим юзкейсом

vitalii
14.05.2018
11:40:17
парни вопрос , делаю вот такую команду
как теперь найти первое совпадение в масиве friends по имени ?
id,index,name,friends[{name:"sfaf"}....]
.aggregate([{$match:{index: {$gt: 5}}},{$unwind:"$friends"}])

yopp
14.05.2018
11:42:17
Ещё раз match и limit 1
Но такое вообще проще сразу в match вписать
index: {...}, “friends.name”: “foo”

vitalii
14.05.2018
11:47:11

yopp
14.05.2018
11:47:40
И тогда вы можете без агрегации обойтись и оставить только findOne

Artem
14.05.2018
12:04:48

yopp
14.05.2018
12:05:37

Artem
14.05.2018
12:06:35
Момент, сейчас до компа дойду и посмотрю
я имею в виду в стартовом скрипте сервиса следующее:
ExecStartPre=/usr/bin/chmod -R 0755 /var/run/mongodb
т.е. можно прям при старте базы задавать необходимые пермишены на каталог с датафайлами базы

Max
14.05.2018
12:30:34
да, а если база большая - сидите и ждите, пока оно все везде проставит.
лучше через umask попробовать