Serhii
а кто-то сталкивался с созданием транзакции для вложенных обьектов?
то есть я сохраняю по очереди children, а в конце линкую с parent
и надо чтобы если кто-то из children не сохранился то отменить всю транзакцию
как я понял, так не работает
Rodion
Ребят, к вопросу об Id. Сильно принципиально хранить uuid в Binary представлении, или ничего страшного не будет если сохранять его в виде строки?
Rodion
Главная проблема двоичного представления состоит в том, что в Compass'e запрос придется делать не по текстовому значению uuid, а по его двоичному представлению в base64 - в общем, очень неудобно.
Alex
есть разница как хранить строку в монго: binData or string(bson type)?
Youdgin
Youdgin
Ребята, а можно как-то в монго сделать, похожее на это SELECT *, accountName FROM, или в монго нужно тогда указывать все поля, которые необходимы ?
Alex
Alex
Nick
Nick
Nick
Youdgin
Nick
Alex
сделайте два поля
у меня это содержимое web страницы. там может быть строка при text/plain или бинарные данные при пдф, док и тд. два поля не лучшая идея имхо
Nick
Nick
и кстати для пдф напомню что в монге ограничение на размер документа 16Мб, если пдф будет вылезать за эти размеры, то его сохранить в дока не поулчится
Alex
Alex
Nick
для хранения файлов и любых других больших данных в монгу используйте gridfs
Nick
Alex
а как в Монго вывести тип для существующего поля в документе коллекции?
Alex
не могу нагуглить
Nick
Alex
Youdgin
Alexandr
Ребята, почему-то данный код не обновляет данные, пробовал в монго атлас и локально в компасе, использую монгус.
const recipientBalance = await findUser
.findOne({ email: recipient }, { balance: 1 })
.lean();
console.log(recipientBalance.balance);
const user = await findUser.findOneAndUpdate(
{ email: recipient },
{ $inc: { balance: 777 } },
{ new: true }
);
console.log(user);
Я значит нахожу пользователя и его баланс, это работает нормально, а затем пытаюсь изменить баланс на 777, баланс не меняется. Ошибок также не получаю.
Cloud
Alexandr
findUser это у тебя модель?
покажи схему
привет, мне здесь уже подсказали, похоже я накосячил с названием монгус схем, сделав их с одинаковыми названиями, сейчас я переделаю и отпишу если не поможет. Еще раз, спасибо за помощь.
Alexandr
привет, мне здесь уже подсказали, похоже я накосячил с названием монгус схем, сделав их с одинаковыми названиями, сейчас я переделаю и отпишу если не поможет. Еще раз, спасибо за помощь.
В итоге заработало, оказалось, что всему виной это одинаковые названия монгус схем, что я использовал.
Меня видать один видео курс запутал, там говорилось следующее, что дескать если у нас коллекция называется users, то схема должна называться User так как потом User превратится во множественное число с маленькой буквы: users, почему это так я и сейчас не до конца понял, но суть в том, что основываясь на этой информации я создал несколько схем для документов в одной коллекции и назвал их все User, так как подумал раз коллекция называется users.
Nick
В итоге заработало, оказалось, что всему виной это одинаковые названия монгус схем, что я использовал.
Меня видать один видео курс запутал, там говорилось следующее, что дескать если у нас коллекция называется users, то схема должна называться User так как потом User превратится во множественное число с маленькой буквы: users, почему это так я и сейчас не до конца понял, но суть в том, что основываясь на этой информации я создал несколько схем для документов в одной коллекции и назвал их все User, так как подумал раз коллекция называется users.
переименование - фишка монгуса, типа для названия модели нужно использовать единственное число (Студент), тогда коллекция (множество) студентов - студенты, вот оно просто по такой логике и преобразует. Единственно не знаю делает ли она корректное переименование cy -> cies и подобных
Nick
В итоге заработало, оказалось, что всему виной это одинаковые названия монгус схем, что я использовал.
Меня видать один видео курс запутал, там говорилось следующее, что дескать если у нас коллекция называется users, то схема должна называться User так как потом User превратится во множественное число с маленькой буквы: users, почему это так я и сейчас не до конца понял, но суть в том, что основываясь на этой информации я создал несколько схем для документов в одной коллекции и назвал их все User, так как подумал раз коллекция называется users.
но при создании модели в монгусе можно явно указать название коллекции и она может никак не относиться к названию модели
Alexandr
Cloud
Nick
Purple Hero🍅
Здравствуйте. Делаю с одним человеком проект на python в котором используем pymongo. Как я могу создать базу данных на сервере, чтобы мой друг мог пользоваться данными из бд?
Anonymous
Нужно управлять базой данных на удалённом сервере?
Purple Hero🍅
Anonymous
На какой ОС работаете?
Purple Hero🍅
Линукс убунту
Anonymous
Вам нужно подключиться к серверу командой в терминале:
ssh -L 8888:127.0.0.1:27017 IP_Сервера
А потом в компасе подключиться по адресу 127.0.0.1:8888
Purple Hero🍅
Компасе? Мы работаем без него, только через питон
Anonymous
Ну тогда нужно указать адрес подключения mongodb://127.0.0.1:8888
Purple Hero🍅
Ага, понял
Purple Hero🍅
Попробую
Anonymous
Если закрыть терминал с SSH, соединение пропадёт
lmn
Можно накатить тмукс на сервак и сохранять/восстанавливать контекст сессий) хотя тут врядли судо есть судя по вопросам
Alex
Alex
Anton
Ребзя, посоветуйте какой лучше использовать тип авторизации в монгу, чтобы максимально безопасно было?
GG
Anton
Р
Кто может посоветовать курс по Mongobd + node js, только Гошу Дударя не говорите
Qahramon
Кто-нибудь работал с балансами? У меня есть способы оплаты, такие как наличные, карта и т. Д., А также валюты. Как я могу эффективно это сохранить?
Leo
Всем привет!
Нужна помощь в составлении запроса, ибо у самого мало что получается(
Дана структура такого вида:
{
"_id" : ObjectId("5e31cc9d95f5730b4b108224"),
"name" : "gwname",
"active" : true,
"network" : {
"interfaces" : {
"eth0" : {
"name" : "eth0",
"alias_ids" : [
"58a5e35402ce1c5f615ffbe9"
],
"interface_class" : "PhysicalInterface",
},
"eth1" : {
"name" : "eth1",
"alias_ids" : [
"58a5e35802ce1c5f615ffbec"
],
"interface_class" : "PhysicalInterface",
},
"eth2" : {
"name" : "eth2",
"has_db" : false,
"alias_ids" : [
"58a5e35d02ce1c5f615ffbef",
"5e32c1600d3c8391cb62408d"
],
"interface_class" : "PhysicalInterface",
}
}
}
}
Мне нужно получать только имя имтерфейса ( который в массиве "name" : "eth...",) по значению alias_ids (изначально известно только это значение).
Я пробовал решить проблему с помощью подобной функции
// пример поиска по имени интерфейса, который работает
db.gws.find(
{
$where: function()
{
for (var field in this.network.interfaces)
{
if (this.network.interfaces[field].name == "eth-mgmt") return true;
}
return false;
}
}
)
но, к сожалению, я так и не смог придумать, как можно провалиться в массив для выборки для того чтобы получить то что нужно. В дальнейшем этот id будет использоваться в bash скрипте..
Подскажите плииз, как лучше подступиться к этой задаче?
Спасибо
Anonymous
Leo
ну основная моя сложность - незнание java и очень плохое знание mongo
я пробовал делать подобным образом, но явно это не правильно, ибо возникает ошибка
db.gateways.find(
{
$where: function()
{
for (var field in this.network.interfaces)
{
for (var field2 in this.field)
{
print (this.field2);
if (this.field2 == "58a5e35d02ce1c5f615ffbef") return true;
}
}
return false;
}
}
)
так же пытался ткнуть туда $elemMatch, чтобы искать по содержимому массива, но тоже не работало
Михаил
1. NoSQL а не Non-SQL
2. Если тебе нужно реализовать отношение один ко многим, то лучше использовать реляционную базу. NoSQL не для этого предназначен.
3. Если уж все же совсем нужно, то да, можешь.
Михаил
Так ещё раз, зачем тебе работать с Mongo как с реляционной базой?
Anton
Да, в случае с NoSQL упор идет на производительность взамен на избыточность данных. Иначе говоря «сохрани больше» нежели «избегай избыточности»
Михаил
Ну про прошлый век это чистый бред
На счет избыточности и в целом подход к работе с данными - выше правильно написали.
Anonymous
Ребят, такой вопрос
есть коллекция с пользователями. У каждого есть дата создания (Date).
Как лучше реализовать так, чтобы можно было взять последние 30 дней и посчитать, сколько пользователей в какой день было создано?
Anonymous
Неужели нужно брать 30 последних дней, преобразовывать их в Date и слать 30 запросов .count() в MongoDB?
Eva🇺🇦
Kirill
Anonymous
Нужно, чтобы по каждому дню можно было сочитать количество пользователей
Cloud
Ну как минимум можно послать 30 запросов в цикле, если вытягивать не все данные это не особо ресурсоемко будет
ну или например аналог Promise.all в жс
можно вытащить 1м запросом, а потом уже средствами ЯП, эти данные рассортировать
возможно можно аггрегацией, к сожалению не секу за нее
Михаил
Anonymous
А если документов несколько миллионов?
Михаил
Anonymous
Ну окей. Спасибо
Alexander
Надеюсь, это был троллинг...
Выше писали про аггрегацию с группировкой. Один запрос — готовый результат.
Leo
Всем привет!
Нужна помощь в составлении запроса, ибо у самого мало что получается(
Дана структура такого вида:
{
"_id" : ObjectId("5e31cc9d95f5730b4b108224"),
"name" : "gwname",
"active" : true,
"network" : {
"interfaces" : {
"eth0" : {
"name" : "eth0",
"alias_ids" : [
"58a5e35402ce1c5f615ffbe9"
],
"interface_class" : "PhysicalInterface",
},
"eth1" : {
"name" : "eth1",
"alias_ids" : [
"58a5e35802ce1c5f615ffbec"
],
"interface_class" : "PhysicalInterface",
},
"eth2" : {
"name" : "eth2",
"has_db" : false,
"alias_ids" : [
"58a5e35d02ce1c5f615ffbef",
"5e32c1600d3c8391cb62408d"
],
"interface_class" : "PhysicalInterface",
}
}
}
}
Мне нужно получать только имя имтерфейса ( который в массиве "name" : "eth...",) по значению alias_ids (изначально известно только это значение).
Я пробовал решить проблему с помощью подобной функции
// пример поиска по имени интерфейса, который работает
db.gws.find(
{
$where: function()
{
for (var field in this.network.interfaces)
{
if (this.network.interfaces[field].name == "eth-mgmt") return true;
}
return false;
}
}
)
но, к сожалению, я так и не смог придумать, как можно провалиться в массив для выборки для того чтобы получить то что нужно. В дальнейшем этот id будет использоваться в bash скрипте..
Подскажите плииз, как лучше подступиться к этой задаче?
Спасибо
Всем привет!
Есть ли идеи как сделать подобный запрос? Или мой подход слишком сложный/неверный ?