Nick
Kirilll
Kirilll
Нашел ответ на свой вопрос
Спасибо @yatoba @dd_bb !
Kirilll
Котяй
Могу ли я на уровне СУБД ввести ограничения типа: "в экземпляре обязательно присутствует одно из полей, и только одно из них"?
Anton K.
Anton K.
судя по доке там validator опирается на jsonSchema
а в jsonSchema на сколько я помню это можно реализовать
Котяй
Anatoly
You
Hunter
Всем привет, нужна помощь по структуре бд.
Есть users и workouts коллекции. User может сохранять себе много workouts. Сейчас только две идеи, это на стороне user делать поле savedWorkouts и туда сохранять id workouts. Вторая это делать как в SQL промежуточную коллекцию с user_id + workout_id. В первой есть проблема, что после удаления workout у всех users нужно проверять и чистить массив savedWorkouts. Второй подход не знаю насколько подходит под такой тип бд. Если у кого-то есть уже похожие кейсы и решение буду очень благодарен
Kirilll
Nick
Hunter
Kirilll
По той логике что есть, он не нужен, только место будет занимать
Кст если будет очень частая запись и удаление в коллекции про больших ее объемах
Можете столкнуться с тем, что при запросах на чтение по конкретной записи может возвращать Не найдено
По крайней мере столкнулись с этим при использовании паймонго
При этом запрос через шел монги отдавал верный ответ
Kirilll
Алексей
Kirilll
Yura
Nick
Nick
Sanity = nil
Anatoly
народ привет, есть кто юзал mongodb bi-connector
у вас нормально работает настройка конфига, а именно - uidSubtype3Encoding ?
цель надо запросить через указанный connector документ, но id который у нас есть, он в формате - UUID(v4) - предположительно что в этом
, а наша монга хранит в формате LUUID,
Поэтому имя ID который мы получили в формате- — UUID(v4), не получается найти в нашей монге, при использование bi-connector
Все пишу, что в языках типа c#/java и т.п решается через настройки подключения,
в bi-connector по факту это должно решиться , с помощь uidSubtype3Encoding в конфиге, вопрос решится почти элементарно, но видимо это работает как то не так.
дело было не в бобине..
Схему тоже нужно генерировать с параметром uidSubtype3Encoding - > csharp
+ прописать это в конфиге службы
Тогда будет корректно работать.
Asset
Приветствую всех, подскажите создаю юзера const newUser = await User.create(user); const user = {
name: name,
email: email,
mobile: mobile,
street: street,
city: city,
postalCode: postalCode,
}; выходит ошибка Error creating user: MongoServerError: E11000 duplicate key error collection: test.users index: phoneNumber_1 dup key: { phoneNumber: null } at InsertOneOperation.execute (/home/asset/projects/almale/almale-server/node_modules/mongodb/lib/operations/insert.js:51:19)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async tryOperation (/home/asset/projects/almale/almale-server/node_modules/mongodb/lib/operations/execute_operation.js:192:20)
at async executeOperation (/home/asset/projects/almale/almale-server/node_modules/mongodb/lib/operations/execute_operation.js:69:16) at async Collection.insertOne (/home/asset/projects/almale/almale-server/node_modules/mongodb/lib/collection.js:154:16) {
errorResponse: { index: 0,
code: 11000, errmsg: 'E11000 duplicate key error collection: test.users index: phoneNumber_1 dup key: { phoneNumber: null }',
keyPattern: { phoneNumber: 1 }, keyValue: { phoneNumber: null }
}, index: 0,
code: 11000, keyPattern: { phoneNumber: 1 },
keyValue: { phoneNumber: null }, [Symbol(errorLabels)]: Set(0) {}
} в модели этого нет const { Schema, model } = require("mongoose");
const schema = new Schema(
{
name: {
type: String,
required: true,
minLength: 3,
maxLength: 100,
},
mobile: { type: String, required: true, maxLength: 30 },
street: { type: String, maxLength: 100 },
city: { type: String, maxLength: 200 },
postalCode: { type: String, maxLength: 20 },
email: { type: String, maxLength: 200, required: true },
},
{
timestamps: true,
}
);
module.exports = model("User", schema); что может быть?
Asset
вопрос закрыт
Evgeniy
может кто подскажет... не могу подключиться через mongodb compass к своей бд по tls. Пишет Hostname/IP does not match certificate's altnames: IP: 185.104.248.223 is not in the cert's list хотя [ alt_names ]
IP.1 = 185.104.248.223
IP.2 = 178.126.91.26 указан и в логах
{"t":{"$date":"2024-10-25T09:34:57.750+00:00"},"s":"I", "c":"NETWORK", "id":22944, "ctx":"conn193","msg":"Connection ended","attr":{"remote":"178.126.91.26:57846","uuid":{"uuid":{"$uuid":"a36d714f-18ee-41a5-a7fe-e49541b7eeaa"}},"connectionId":193,"connectionCount":5}}
{"t":{"$date":"2024-10-25T09:35:07.652+00:00"},"s":"I", "c":"WTCHKPT", "id":22430, "ctx":"Checkpointer","msg":"WiredTiger message","attr":{"message":{"ts_sec":1729848907,"ts_usec":652721,"thread":"1:0x7f50ac5c26c0","session_name":"WT_SESSION.checkpoint","category":"WT_VERB_CHECKPOINT_PROGRESS","category_id":7,"verbose_level":"DEBUG_1","verbose_level_id":1,"msg":"saving checkpoint snapshot min: 107, snapshot max: 107 snapshot count: 0, oldest timestamp: (0, 0) , meta checkpoint timestamp: (0, 0) base write gen: 10508"}}}
Mars
Может кто-то реально помочь адаптировать приложение на iOS которое использует бэк в облаке на Атласе для работы в России ? в личке
Kirilll
Всем привет
Интересный вопрос
Можно ли через монгос узнать, на каком шарде хранится конкретный документ?
Arams
Arams
Возможно оно
Val
Люди, помогите, как мне включить аутентификацию на монго кластере?
Запускаю через docker compose yml
Куда прописать
command [“mongod”,”—auth”] ?
Если у меня шесть инстансов шардов, три конфиг сервера и один монгос
TheDiVa
Есть ли для монги аналог HikaryCP для sql?
Y
Добрый день, подскажите, пожалуйста. Где-то читал, что если указывать $projection, то это может ускорить выполнение pipeline. Правильно ли это или есть какие-то нюансы?
Val
Можно ли «на ходу» в пайплайне агрегации накидывать к значению поля с типом ISODAtE еще три часа?
Амир
Val
Как и зачем?
Амир
Как и зачем?
Ну можете изменить текущее через set и обращение через $
Val
Амир
читайте про пайплайн и что там сделать можно
Tetra
TheDiVa
Artem
Всем привет!
Есть Монга 6.0.13
Есть запрос, который запрашивает имя клиента и его метку в виде regexp, используется индекс по двум полям, но не тот который нужно и работает 7-8с.
Через hint берём и используем нужный индекс и получаем 1-2с на запрос.
Читал, что планировщик Монги запросы с regexp прекрасно отрабатывает по индексу, Если в первом поле идёт обычное условие, а уже затем regexp.
Оба индекса перестраивал, без изменений.
Статистику самого кластера пока не сбрасывал, т.к повлияет на работоспособность остальных клиентов.
Какие ещё действия можно предпринять?
Kirilll
Artur
Работаю с mongoose библиотекой и проблема при создании объекта в базе данных mongodb.
Ошибка:
Error creating user: TypeError: Converting circular structure to JSON
--> starting at object with constructor 'ClientRequest'
| property 'agent' -> object with constructor 'Agent'
| property 'sockets' -> object with constructor 'Object'
| ...
| index 0 -> object with constructor 'TLSSocket'
--- property '_httpMessage' closes the circle
at JSON.stringify (<anonymous>)
Код
async createUser(data: UserCreationRequest): Promise<UserFullData> {
try {
const UserModel = await this.getUserModel();
const newUser = new UserModel(data);
const savedUser = await newUser.save();
console.log(`User created: ${JSON.stringify(savedUser.toObject())}`);
console.log(
`Mapped user to UserFullData: ${JSON.stringify({
id: savedUser.id, // Виртуальное поле id, автоматически становится строкой
contactEmail: savedUser.contactEmail,
resellerNotes: savedUser.resellerNotes,
username: savedUser.username,
password: savedUser.password,
messageSent: savedUser.messageSent,
startDate: savedUser.startDate,
bouquetsSelected: savedUser.bouquetsSelected,
})}`,
);
return {
id: savedUser.id, // Виртуальное поле id, автоматически становится строкой
contactEmail: savedUser.contactEmail,
resellerNotes: savedUser.resellerNotes,
username: savedUser.username,
password: savedUser.password,
messageSent: savedUser.messageSent,
startDate: savedUser.startDate,
bouquetsSelected: savedUser.bouquetsSelected,
};
} catch (error) {
console.error('Error creating user in MongoDB:', this.safeErrorLog(error));
throw new CustomError('Failed to create user', 500);
}
}
import mongoose, { Model, Schema } from 'mongoose';
import { UserFullData } from '@app-types/userTypes';
const UserSchema: Schema<UserFullData> = new Schema(
{
contactEmail: { type: String, required: true },
resellerNotes: { type: String, required: true },
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
messageSent: { type: String },
startDate: { type: String },
},
{
toJSON: { virtuals: true }, // Ensures virtual fields are included in JSON responses
toObject: { virtuals: true },
},
);
// Virtual to map `_id` to `id` as a string
UserSchema.virtual('id').get(function () {
return this._id.toString();
});
const User: Model<UserFullData> = mongoose.models.User || mongoose.model<UserFullData>('User', UserSchema);
export default User;
Kirilll
Kirilll
Kirilll
Artem
Kirilll
Kirilll
Artem
Artem
Kirilll
ну пока все выглядит очень странно
может очепятки в индексе/названии поля?
как будто бы проблема где то на поверхности, ни разу не сталкивался и не слышал, чтобы монга просто игнорировала обычный не скрытый индекс
Kirilll
кириллица вдруг)
mylifestyle
Друзья, в Beanie при получении доков из базы я получаю текстовые поля "_id". Есть ли встроенный способ сразу получить преобразованнный id?
Юлиан🦉
mylifestyle
А как в Beanie искать с помощью регулярных выражений? Никак не могу понять.
mylifestyle
Разобрался, если кому поможет
...find.(Model.name == regex)
mylifestyle
странно, не думал, что так оно будет работать
Experimentalist
Nick
Реально так?
На больших объемах да, на мелких еще хоть както можно использовать если в базе есть нативная поддержка как в постгре например, но в монге это гемор и стоит отказываться
Experimentalist
Oleksandr
Nick