Daniil
Приложение должно начать слушать порт после запуска, у вас оно это не делает
Daniil
Но с этим надо в @nodejs_ru
S
ребята сравнил 2 базы данных и оказалась что монга ппц какая медленая, что можно сказать по этому поводу?
Daniil
ребята сравнил 2 базы данных и оказалась что монга ппц какая медленая, что можно сказать по этому поводу?
Можно сказать, что синтетические тесты с непонятными критериями в непонятных условиях не имеют ничего общего с реальностью
Анатолий
Если к NoSQL подходить к реляционными привычками...
yopp
Как и в принципе по любым тестам
yopp
Любой тест может сказать что-то только о том паттерне нагрузки который генерирует тест
since
агрегации медленные, если монга у тебя тормозит - не там применяешь\не правильно пользуешься
Готти
Всем привет!
Готти
https://freelance.habr.com/tasks/307444
Готти
Кто нибудь может помочь?
Daniil
Да у вас там скорее всего коннект к базе теряется
Bogdan
https://freelance.habr.com/tasks/307444
Есть полный лог ошибки?
Готти
Может перенести на свой сервер?
Bogdan
Попробуйте монго атлас, если данных с парсинга не много, проверите соединение. Может ещё у вас какие-то ифы вылетают "иногда", а там ошибка в коде?
Nazar
Блин, не могу понять, что мне нужно, есть коллекция, по которой происходит агрегация с group, там есть поле amount: number и provider: enum, cейчас просто считается сумма от amount, а хочу сделать, что бы считалась amount по каждому из provider.
Ilya
всем привет у меня есть коллекция такого вида [{_id: ..., answers: [{userId: ...}, {userId: ...}]}] как можно выбрать нужный документ с нужным userId? чтобы в ответе был только нужный элемент из массива answers?
Ilya
const response = await AdminQuestionary.find({_id: questionaryId}, {answers: {$elemMatch: {userId: userId}}})
Ilya
я пробовал вот так
Ilya
Unsupported projection option: value: { userId: "5eda42d4f9246b3c5c330edf" }
Ilya
но вот такая ошибка
Daniil
но вот такая ошибка
Ну вы неправильно используете метод find
Ilya
почему неправильно?
Daniil
Все элементы запроса должны быть в одном объекте и переданы в качестве первого аргумента
Daniil
А в качестве второго аргумента этот метод принимает projection, он вам здесь не нужен и его можно опустить вообще
Ilya
db.schools.find( { zipcode: "63109" }, { students: { $elemMatch: { school: 102 } } } )
Ilya
вот пример из их доки
Daniil
пришлите ссылку на этот пример
Ilya
https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/
Ilya
если я все запихаю в первый параметр, да, он найдет этот объект, то при этом вложенный массив он мне тоже пришлет
Daniil
Прошу прощения, я перепутал $elemMatch (query) и $elemMatch (projection)
Daniil
Вы mongoose используете?
Ilya
ага:)
Daniil
ага:)
хм, у меня на таком же примере все норм работает
Daniil
а какой mongoose?
Ilya
5.9.5
Daniil
покажите кусок куда и полный стектрейс ошибки
Ilya
Ilya
структура
Ilya
const response = await AdminQuestionary.find({_id: questionaryId}, {answers: {$elemMatch: {userId}}});
Ilya
вот мой запрос
Ilya
вот ошибка: { MongoError: Unsupported projection option: value: { userId: "5ebe862724a76f2e88562a3a" } at MessageStream.messageHandler (C:\Projects\it-aces-fun-portal\node_modules\mongodb\lib\cmap\connection.js:261:20) at MessageStream.emit (events.js:189:13) at processIncomingData (C:\Projects\it-aces-fun-portal\node_modules\mongodb\lib\cmap\message_stream.js:144:12) at MessageStream._write (C:\Projects\it-aces-fun-portal\node_modules\mongodb\lib\cmap\message_stream.js:42:5) at doWrite (_stream_writable.js:410:12) at writeOrBuffer (_stream_writable.js:394:5) at MessageStream.Writable.write (_stream_writable.js:294:11) at Socket.ondata (_stream_readable.js:667:20) at Socket.emit (events.js:189:13) at addChunk (_stream_readable.js:284:12) at readableAddChunk (_stream_readable.js:265:11) at Socket.Readable.push (_stream_readable.js:220:10) at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17) ok: 0, errmsg: 'Unsupported projection option: value: { userId: "5ebe862724a76f2e88562a3a" }', code: 2, codeName: 'BadValue', operationTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1592227804 }, '$clusterTime': { clusterTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1592227804 }, signature: { hash: [Binary], keyId: [Long] } }, name: 'MongoError', [Symbol(mongoErrorContextSymbol)]: {} }
Daniil
вот мой запрос
ошибка такого вида появляется если в mongo уходит запрос вида AdminQuestionary.find({_id: questionaryId}, { value: { userId: "5ebe862724a76f2e88562a3a" } });
Daniil
но без какой либо доп. обработки этого не происходит
Daniil
вы там нигде внутри AdminQuestionary не процессите аргументы перед запросом?
Ilya
да, спасибо большое, я нашел ошибку после вашего коммента
Ilya
буду проверять теперь входящие параметры
Ilya
отдавал вместо строки объект
Ilya
спасибо:)
Anonymous
Как записать отдельные данные в отдельное поле ?
Anonymous
Или мне в expressjs ?
👌
Покажите код
Хотел добавить id User(Schema) в Course(Schema) но выводить ошибка
Daniil
Хотел добавить id User(Schema) в Course(Schema) но выводить ошибка
У вас скорее всего в базе в коллекции users есть юзер, у которого в поле _id значение “xcv”
Daniil
А mongoose валидирует входящий документ и выбрасывает ошибку
Daniil
формально можно избавиться от нее добавив вызов метода .lean() в запросе User.findById
Daniil
но вообще не нужно использовать вместо встроенного ObjectId свои строковые индентификаторы в поле _id
Daniil
Если вам нужен какой то кастомный строковый идентификатор (для визуального представления в интерфейсе например), то заведите еще одно поле в схеме title/name/customId и пишите туда
Shokhrukhbek
Всем привет, Мне нужна помощь по настройке Client-Side-Encryption в Mongodb. Итак, я следовал некоторым инструкциям и установил Mongodb enterprise one, и когда я запускаю свой проект node.js, возникает ошибка, такая как UnhandledPromiseRejectionWarning: MongoError: Unable to connect to `mongocryptd, please make sure it is running or in your PATH for auto-spawn кто-нибудь может иметь это раньше? Спасибо
Anonymous
Приветствую! Нужно хранить в массиве документа 10к элементов типа int, как это лучше сделать? Элементы вида - 0000-9999, сохраняются не так как надо + довольно много времени занимает
Anonymous
Anonymous
Как массив хранить наверное
Угу, причём только строковый
Vladimir
Зачем строковый?
Anonymous
Зачем строковый?
Если числовой, то данные хранятся искаженными
Vladimir
🤔
Anonymous
yopp
в int типах нет ведущих нолей
Vladimir
И что тут не так?
Anonymous
в int типах нет ведущих нолей
А какой использовать?
Anonymous