Aleksey
забирать из этой ноды и сейвить сразу в шардед кластер
Alexandr
забирать из этой ноды и сейвить сразу в шардед кластер
Я как раз когда подключался к проекту, думал, что уже что-то такое написано. Но оказалось - нет
Alexandr
самому писать - не знаю как...
Alexandr
Есть может быть какие-то примеры подобного?..
Aleksey
а программистов нет?
Aleksey
кто писал это чудо
Aleksey
для них подобный код - вопрос половины рабочего дня КМК
Alexandr
я с ними не знаком еще.
Alexandr
Пока знаю только руководителя проекта. Попробую конечно сейчас выкляньчить написание такого решения ибо в будущем явно не раз пригодится
Alexandr
Хотя может проще самому написать...
Alexandr
Но что-то мне подсказывает, что в данной ситуации всетаки быстрее будет каталог с данными перекинуть
Aleksey
Хотя может проще самому написать...
ой не факт. еще же листинг файлов надо получить както. (не уверен что в гридфс он есть в удобном виде - но не писал под него ничего, не берусь утверждать)
Aleksey
Но что-то мне подсказывает, что в данной ситуации всетаки быстрее будет каталог с данными перекинуть
перенос стейта всегда будет быстрее =) главное версию монги сохранить чтобы ничего не напряглось при старте на новом месте
Alexandr
так и есть - совпадают полностью
Slava
Привет как выгрузиьт запис монги в цсв ? mongoexport -d test -c user -q '{ coins: { $elemMatch: { "id":"30","amount":0}}}' --csv -f first_name,last_name,title --out exportdir/myRecords.json вот нагуглил но где писать это?
Viktar
Подскажите в агрегации лимит работает после того как будет фетч всех документов подхоящих под условие?
Viktar
db.addressCatalog.aggregate([ { "$geoNear": { "near": { "type": "Point", "coordinates": [ -81.214015, 33.984846 ] }, "distanceField": "dist.calculated", "maxDistance": 200, "query": {}, "includeLocs": "dist.location", "spherical": true } }, { "$limit": 50 } ])
LUVERISE
Здравствуйте, помоги мне, подскажите как использовать setInterval вместе с MongoDB
𝚂𝚑𝚞𝚔𝚑𝚊
привет, у меня есть populate перед(post) ‘findOne’, в некоторых роутах нужно изменить параметры populate как это сделать?
Viktar
Все получилось! Спасибо!
Отлично. Мы так делаем раз в три месяца. когда выпускаем новый срез данных
yopp
если можно сервер остановить, то можно скопировать папку с данными
Останавливать не обязательно: https://docs.mongodb.com/manual/reference/method/db.fsyncLock/
yopp
Отлично. чтение остаётся
Только если запретить всем клиента писать. Любая операция записи заблокирует очеред команд
Viktar
я сейчас блокирую запись через роль read
Viktar
Подскажите, можно в монге сагрегировать статистику - какие какие есть поля - значение - количество значений { field1: { value1: 5, value2: 10 }, field2: { value1: 7, value2: 50 }, .... field: { value1: 25, value2: 30 } }
Viktar
ну и исключить такие поля как id и которые всегда будут заполнены, уникальными значениями
Viktar
коллекция плоская, key-value
Alexandr
Уважаемые знатоки, подскажите пожалуйста, что за проблема: создал для базы пользователя через mongos, соответственно и пароль указал. Если приложение подключается с указанием логина и пароля, то авторизация не проходит. А если просто адрес и порт указать, то все работает. Надо явно сказать, что теперь только с авторизацией ходим? Если так, то как это сделать? Я нахожу только инструкции о том, как пользователя создать
Alexandr
база то сконфигурирована под аутентификацию?
Делал так: db.createUser( { user: "myUserAdmin", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "myBase" } ] } )
Alexandr
При входе пишет Access control is not enabled for the database
Alexandr
Т.е. видимо не сконфигурирована база под авторизацию
Alexandr
mongod $OPTIONS --shardsvr
Alexandr
я так понимаю, что надо в строку запуска —auth добавить?
Alexandr
А с самой базой надо что-то делать кроме создания пользователя?
Alexandr
И надо ли что-то делать с mongos? Строку запуска править например...
Дмитрий
я так понимаю, что надо в строку запуска —auth добавить?
там не только auth добавить, но и поменять деплой, поскольку надо выбрать способ авторизации и т.д.
Дмитрий
в официальных доках
Alexandr
Кажется нашел. правильно понимаю, как только я включу авторизацию, у меня не только пароль начнут запрашивать, но и кластер рассыплется т.к. авторизации между узлами нет?
LUVERISE
Друзья, подскажите как из коллекции вывести список всех значений по 1 переменной или вывести только 5 самых больших по одной переменной по значению
Андрей
Товарищи, кто строил HA кластер на 2 ДЦ? Какой деплой лучше всего выбрать? На старте имею 3 хоста на одной стороне. Хочу эту сторону потушить и иметь праймари со вторичной репликой на той стороне, потом поднять ставший недоступным набор реплик и заиметь праймари там, где было.
✙ Nikita
Подскажите, если я буду выбирать какой то большой документ из бд и укажу что мне нужные только несколько полей, ( db.stuff.findOne({_id: ObjectId('...')}, {title: 1, date: 1}) ) - то это будет эффективно? имею ввиду монга считатет только эти поля или будет грузить весь документ и потом из него фильтровать не нужные поля?
Kirill
Всем привет, подскажите как суммировать FinalCharge в одну сумму со всех объектов в mongoose, использую подобную конструкцию, но безрезультатно { $group: { _id: null, TotalFinalCharge: { $sum: "$Payment.FinalCharge", }, }, }, { "_id": "BinData(3,\"//7WOpUUAUaKer/Ljh/HZA==\")", "Payment": { "FinalCharge": "28.19" }, "Total": 6 }, { "_id": "BinData(3,\"//tR5stoj0G0Horpq7fkWQ==\")", "Payment": { "FinalCharge": "22.3" }, "Total": 1 },
Kirill
А как выглядит «безрезультатно»? :)
[ { "_id": null, "sum": 0 } ]
yopp
Сторанно что поле на выходе называется sum а не TotalFinalCharge
Kirill
Сторанно что поле на выходе называется sum а не TotalFinalCharge
с этим все ок, я не могу понять почему не суммирует
yopp
с этим все ок, я не могу понять почему не суммирует
у вас там строка вместо числа в поле FinalCharge
yopp
{ $group: { _id: null, TotalFinalCharge: { $sum: { $toDecimal: "$Payment.FinalCharge" } }, }, }
Kirill
у вас там строка вместо числа в поле FinalCharge
спасибо, теперь понимаю в чем проблема) а если версия монго ниже 4.0?)
yopp
спасибо, теперь понимаю в чем проблема) а если версия монго ниже 4.0?)
Обновится до 4.0+, так как 3.6 умрёт уже через два месяца
yopp
или вот что-то типа такого
yopp
{ $group: { _id: null, TotalFinalCharge: { $sum: { $add: [ { $multiply: [ { $toInt: { $first: { $split: ["$Payment.FinalCharge", "."] }}}, 100] }, { $multiply: [ { $toInt: { $last: { $split: ["$Payment.FinalCharge", "."] }}}, 1] } ] } }, }, }
yopp
и потом на клиенте делить на 100, переведя int в точный тип
yopp
{ $group: { _id: null, TotalFinalCharge: { $sum: { $add: [ { $multiply: [ { $toInt: { $first: { $split: ["$Payment.FinalCharge", "."] }}}, 100] }, { $multiply: [ { $toInt: { $last: { $split: ["$Payment.FinalCharge", "."] }}}, 1] } ] } }, }, }
вместо $first и $last надо $arrayElemAt, так как если в строке не будет точки, то $last и $first будут указывать на одно и тож число. плюс к этому для дробной части до $toInt нужно будет добавить $ifNull
yopp
{ $group: { _id: null, TotalFinalCharge: { $sum: { $add: [ { $multiply: [ { $toInt: { $arrayElemAt: [ { $split: ["$Payment.FinalCharge", "."] }, 0 ] } }, 100] }, { $multiply: [ { $toInt: { $ifNull: [ { $arrayElemAt: [ { $split: ["$Payment.FinalCharge", "."] }, 1 ] }, 0 ] } }, 1] } ] } }, } }
yopp
как-то так
Pavel
Ребят, никто не сталкивался с мультиклиентской архитектурой на mongodb (mongoose)?
Pavel
/
Pavel
/stat@combot
Susa
Каким методом можно подсчитать кол-во элементов в коллекции?
Susa
count?)
Спасибо, теперь чувствую себя идиотом
Daniil
Спасибо, теперь чувствую себя идиотом
Ещё точнее: https://docs.mongodb.com/manual/reference/method/db.collection.countDocuments/#db.collection.countDocuments https://docs.mongodb.com/manual/reference/method/db.collection.estimatedDocumentCount/#db.collection.estimatedDocumentCount Просто count все таки уже deprecated + там есть свои нюансы у этих двух методов
Николай
ВСем привет, есть вопрос. Использую mongoose, на каждый запрос к базе открываю соеднинение и закрываю его, как только все сделано. Сейчас словил ошибку - topology is closed, please connect. Пишут, что я, тип, закрываю соединение до того, как делаю запрос. Сталкивался кто с такой ошибкой?
Daniil
В целом да, ошибка об этом говорит обычно