
Mykola
15.01.2018
21:16:52
Если ли разница при декларироание поля в схеме используя mongoose ? password: {type: String}, vs password: String,

Nick
15.01.2018
22:19:43

Artem
16.01.2018
09:35:36
Добрый день, камрады, помогите с синтаксисом, а то чет туплю.
Надо вывести список пользователей у которых присутствует поле customData.office.
Пытаю такую конструкцию: db.getUsers().forEach(function(x) {if (x.customData.office != null) {printjson(x.user)}})
задача просто, скриптом массово изменить описание пользователей

Google

anatolii
16.01.2018
11:24:43
$exists: true
Выбери всех с этим условием и меняй
Это условие не использует индекс ?

Peter
16.01.2018
13:37:09
Можно ли через mongodb compass делать aggregation? Если нет то какие альтернативные GUI приложение вы используете для mongodb?

Иван
16.01.2018
13:38:46
Robo3t

Ruslan
16.01.2018
14:11:42
Добрый день, помогите пожалуйста.
[conn187] end connection 14.134.3.4:32760 (14 connections now open)
в логах монги, кто-то ломится ко мне, как-то можно его забанить?
у меня открыт порт и включена авторизация. Когда я подключась к mongo меня встречает консоль управления много. Почему так? В MySQL пока не авторизуешься, никто тебя не пустит

yopp
16.01.2018
14:14:45
Куда подключаетесь и что за консоль?!

Ruslan
16.01.2018
14:14:46
rus@asterisk:~$ mongo x.x.x.x:27017
MongoDB shell version: 2.4.10
connecting to: x.x.x.x:27017/test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
>

Driver
16.01.2018
14:15:26
fail2ban?

yopp
16.01.2018
14:16:11

Ruslan
16.01.2018
14:16:37
> db.runCommand( { connectionStatus: 1, showPrivileges: true } )
{ "authInfo" : { "authenticatedUsers" : [ ] }, "ok" : 1 }
>

yopp
16.01.2018
14:19:19
Прикрыть доступ к монге из внешней сети

Google

Ruslan
16.01.2018
14:19:43

yopp
16.01.2018
14:20:28
В каком смысле — других?
Если у вас в логах нет сообщения об успешной аутентификации, то чего вы ещё хотите? :)
Можно начать с того, что наружу должны торчать только те сервисы, которые являются публичными. Остальные сервисы должны по хорошему вообще находиться в изолированной сети, которая наружу не маршрутизируется. Для обслуживания поднять vpn шлюз в изолированню сеть или другую сеть, в которой есть маршрутизация с сетью сервисов.

Driver
16.01.2018
14:23:49
все решаемо, но не средствами самой монги

yopp
16.01.2018
14:24:09
это мнимая безопасность вообще
если монгу для обслуживания случайно перезапустят без авторизации и не прикроют её из внешнего мира, fail2ban ничем вообще не поможет

Driver
16.01.2018
14:25:31
ну это суровый пример стрельбы в ногу

yopp
16.01.2018
14:25:36
это реальность

Driver
16.01.2018
14:25:41
увы, да

yopp
16.01.2018
14:25:46
не увы, это нормально
именно для этого нужно заводить сервисы в изолированных сетях, а ещё лучше когда у каждого сервиса своя сеть (здравствуй sdn) и между сетями ходит только разрешенный трафик

Олег
16.01.2018
14:30:00
Олег, [Jan 16, 2018 at 4:29:15 PM]:
Привет всем. Как get запросом вытянуть список всех Collections из MongoDB? Юзаю mongoose.
getCollectionList(req,res) {
console.log('getCollectionList')
try {
var showCollections = function(db, callback) {
mongoose.db.listCollections().toArray(function (err, names) {
console.log(names)
});
}
console.log(list)
res.send("showCollections")
}
catch (err) {
res.status(500).send({
error:err
})
}
}
что то такое делаю, но результата нет

Ruslan
16.01.2018
14:32:28

yopp
16.01.2018
14:33:26

GNU/Docker
16.01.2018
14:35:36
не встречал ни одного кейса где база на публичном айпишнике была бы оправдана
а вот кейсов слива данных из-за довнов-дба история помнит достаточно

Google

Ruslan
16.01.2018
15:12:07
подскажите плиз, в чем разница?
db.users.save( { 'name':'user 2', 'level':2 } )
db.users.insert( { 'name':'user 3', 'level':3 } )

Nick
16.01.2018
15:13:16
https://docs.mongodb.com/manual/reference/method/db.collection.save/
https://docs.mongodb.com/manual/reference/method/db.collection.insert/

Ruslan
16.01.2018
15:14:29
{'_id': ObjectId('5a5e04c1040702033857f393'),
'query': 'bitcoin',
'type': 'bloomberg',
'url': 'https://www.bloomberg.com/news/articles/2017-11-16/bitcoin-exchange-wants-to-be-digital-safe-house-for-hedge-funds'}
мне надо save делать получается

Nick
16.01.2018
15:15:21
получается, что надо понять что нужно сделать логически, потом прочитать чем отличаются методы и выбрать подходящий под твою задачу

Ruslan
16.01.2018
15:16:02

Nick
16.01.2018
15:16:37
ну или задать вопрос по нормальному, например, мне нужно вставить док, но если там есть уже такой, то выдать ошибку

Daria
16.01.2018
15:30:06
Подскажите, пожалуйста, почему при использовании
subCategoryBulk.find({id: subCategory.id}).upsert().updateOne({$set: subCategory})
я все равно получаю дублирование данных в базе?
По логам добавление этой записи делается только один раз на элемент.
По задаче: у меня есть массив подкатегорий, я пробегаюсь по каждому - если подходит по условиям, то пытаюсь либо обновить, либо вставить в базу. Так как элементов много, использую bulk.
Но обнаружили, что даже если база пустая, то некоторое дублирование все равно присутствует.

yopp
16.01.2018
20:25:24

Daria
17.01.2018
00:37:43
Что дублируется?
Записи в базе, то есть после выполнения функции словно некоторые из подкатегорий несколько раз вставились. Находили до 5 вставок подряд одной и той же подкатегории.

Ruslan
17.01.2018
06:35:17
всем привет, помогите пожалуйста
db.articles.update({query : "bitcoin"}, { $set: { body : "" }}, false, true)
добавляю body, для всех query "bitcoin" , а если я хочу добавить для всех результатов где body нет. Как мне это сделать

Artem
17.01.2018
06:37:01
Как в моем вчерашнем вопросе, $exists в помощь)

Ruslan
17.01.2018
06:40:04

Artem
17.01.2018
06:47:36
Да, очень похоже на правду.

anatolii
17.01.2018
09:53:57
Не советую использовать $exists на ключевых полях, если выборка постоянная, лучше это поле держать в схеме с каким-то пустым значением типа null. $exists перебирает всю коллекцию игнорируя индексы
$exists: false перебирает

Ruslan
17.01.2018
10:55:04
ребята, нужна помощь
знаком в монго два дня. Как вывод результатов сделать красивым или построчным
.pretty() есличто

Михаил
17.01.2018
12:10:40
Не нашел профильного чата! Накидайте клевых хостингов забугорных, пожалуйста. Для небольшой VPSки

Google

Slava
17.01.2018
12:12:26
ovh, digitalocean, servers com
еще можно рассмотреть hetzner

Ruslan
17.01.2018
12:13:00

Михаил
17.01.2018
12:13:43
ну это пожалуй самый близкий к теме чат, да =)
из моего набора чатов

Денис
17.01.2018
12:35:22
фришный амазон на год

yopp
17.01.2018
13:02:03

Artem
17.01.2018
13:02:48
коллеги, а что можно почитать по анализу планов запросов в 3.x?

yopp
17.01.2018
13:03:01

Михаил
17.01.2018
13:03:15

Daria
17.01.2018
13:04:27

yopp
17.01.2018
13:05:02
В чём вопрос?

Daria
17.01.2018
13:07:11

yopp
17.01.2018
13:08:18
Оу. А почему вы так думаете?
Потому что если данные, которые не должны дублироваться, дублируются при неупорядоченной вставке, значит у вас какая-то проблема с запросами.

Daria
17.01.2018
13:10:42

yopp
17.01.2018
13:13:57
Скорее это проблема в использовании ODM. Вероятно subCategoryBulk.find({id:subCategory.id}).upsert().updateOne({$set: subCategory}) собирает два запроса. Но если честно я вообще не понимаю что эта строка делает, так что смотри в логи.
И если вы более подробно опишете свою задачу, можно будет что-то предложить

Google

Daria
17.01.2018
13:18:52
Задача импорта: я забираю массив данных (у них есть свой id, по которому я сравниваю новые данные и хранящиеся у меня локально).
Затем я пытаюсь либо обновить свою запись в базе, либо создать новую.
Так как элементов много, то была попытка использовая bulk функции.
Я делала вывод - каждый элемент в коде обрабатывался один раз, то есть должна быть только одна запись.

yopp
17.01.2018
13:38:53
На этот id нужно создать уникальный индекс. И проконтролировать что у вас действительно генерируется один upsert запрос. Думаю что в вашем ODM это не так

Daria
17.01.2018
13:42:09

IGOR
17.01.2018
15:42:35
ребята, а чем можно просматривать монго кроме компаса и рокмонго ?

Stepan
17.01.2018
15:44:59
studio 3t

IGOR
17.01.2018
15:46:15
studio 3t
вот да, только что нашел) отличный гуи

Stepan
17.01.2018
15:46:33
как по мне, так он самый лучшый

IGOR
17.01.2018
15:50:45

Stepan
17.01.2018
16:03:44
руками - нет
но там есть много опций для бекапа

Ruslan
17.01.2018
16:21:59
помогите пожалуйста
я хочу чтобы монго возвращала результат, где {'body: ''}
но она мне возвращает
> db.articles.find({'body': ''}).limit(1)
{
"_id" : ObjectId("5a5e0127040702033857efb7"),
"url" : "https://www.bloomberg.com/gadfly/articles/2018-01-16/can-hedge-funds-handle-a-bitcoin-bust",
"type" : "bloomberg",
"query" : "bitcoin",
"article" : "DATA CHECK: 2018-01-16, func_name: get_aricles",
"body" : [
"Hedge fund managers have been lying awake at night for years worrying about poor performance, weak volatility and whether it might be time to just move on and do something else -- like get into Bitcoin maybe.",""
],
"title" : "Can Hedge Funds Handle a Bitcoin Bust?",
"date" : ISODate("2018-01-16T00:00:00Z"),
"latest_check" : "DATA CHECK: 2018-01-17"
}

Arthur
17.01.2018
19:41:59
Всем привет! Подскажите пожалуйста как остортировать документы в коллекции по двум полям сразу?