Denis 災 nobody
ок.
Denis 災 nobody
надо это всё в доке отметить
Denis 災 nobody
а у тебя есть это всё в читаемом виде?
inqfen
inqfen
Кворум это когда больше одного
Daniil
yopp
https://docs.mongodb.com/manual/replication/#automatic-failover
Alexander
https://github.com/ilex/aiomongodel но я не юзал, только motor отдельно
u = await User(name='Alexandro').save(db, do_insert=True)
Какая же грязь... Ну почему никто не делает нормальных ODM?
@pandamy619, сколько-то времени назад я написал себе ODM. Работает в продакшене, проблем не создаёт. В асинхронщину умеет, только доку не написал. Если будут вопросы: пиши в личку, подскажу.
https://github.com/zzzsochi/yadm
kk
Vlad
Denis 災 nobody
это там все есть вообще)
в нашей внутренней. Я вот с монгой толком не работал, для меня это всё новая инфа
Arams
день добрый, тяну обьект по айди из нужной таблицы.
{
$lookup: {
from: 'books',
localField: 'bookId',
foreignField: '_id',
as: 'bookName'
}
}
а как вытянуть только одно поле а не весь обьект? нужно по айди вытянуть поле name
yopp
Alex
Hey guys, I need some help.I have a NoSQL-MongoDB assignment I am working of identifying 5 use cases of reddit.com. Can one help me with some basics because I am really stuck!!!
Arams
народ подскажите пожалуйста как в данный запрос впихнуть where?
BookHistory.aggregate([
{
$lookup: {
from: 'books',
localField: 'bookId',
foreignField: '_id',
as: 'bookName2'
},
},
{$unwind:'$bookName2'},
{
$project:{
bookName:'$bookName2.name',
returnDate: 1,
act: 1,
actDate: 1,
readerId: 1
}
}
])
слияние таблиц проходит ок. но нужно вытягивать только те записи в которых readerId совпадает с айдишником который приходит на сервер
Arams
readerId в первой таблице, до lookup
Mykola 🤷🏼♀️
народ подскажите пожалуйста как в данный запрос впихнуть where?
BookHistory.aggregate([
{
$lookup: {
from: 'books',
localField: 'bookId',
foreignField: '_id',
as: 'bookName2'
},
},
{$unwind:'$bookName2'},
{
$project:{
bookName:'$bookName2.name',
returnDate: 1,
act: 1,
actDate: 1,
readerId: 1
}
}
])
слияние таблиц проходит ок. но нужно вытягивать только те записи в которых readerId совпадает с айдишником который приходит на сервер
$match первым элементом пайплайна?
Arams
$match первым элементом пайплайна?
const bookHistory = await BookHistory.aggregate([
{ $match : { readerId : "5ec3f547209caf11b9c24f7b" } },
{
$lookup: {
from: 'books',
localField: 'bookId',
foreignField: '_id',
as: 'bookName2'
},
},
{$unwind:'$bookName2'},
{
$project:{
bookName:'$bookName2.name',
returnDate: 1,
act: 1,
actDate: 1,
readerId: 1
}
}
])
Arams
вот так возращает пустой массив
Vova
play.db-ai.co
Mykola 🤷🏼♀️
const bookHistory = await BookHistory.aggregate([
{ $match : { readerId : "5ec3f547209caf11b9c24f7b" } },
{
$lookup: {
from: 'books',
localField: 'bookId',
foreignField: '_id',
as: 'bookName2'
},
},
{$unwind:'$bookName2'},
{
$project:{
bookName:'$bookName2.name',
returnDate: 1,
act: 1,
actDate: 1,
readerId: 1
}
}
])
там в коллекции наверное ведь ObjectId, а не стринга.
Нужно конвертнуть в ObjectId этот renderId
Vova
const bookHistory = await BookHistory.aggregate([
{ $match : { readerId : "5ec3f547209caf11b9c24f7b" } },
{
$lookup: {
from: 'books',
localField: 'bookId',
foreignField: '_id',
as: 'bookName2'
},
},
{$unwind:'$bookName2'},
{
$project:{
bookName:'$bookName2.name',
returnDate: 1,
act: 1,
actDate: 1,
readerId: 1
}
}
])
Этот сайт умеет обьяснять запросы агрегации, и показывать результат выполнения для каждого stage
Arams
Arams
хотя встает вопрос почему конструкция .find({readerId: req.params.id}) работает. там же тоже стринг
Daniil
Arams
да
Daniil
он не конвертит objectid в строки в aggregate
Daniil
а во всех остальных конвертит
Arams
в общем нужно конвертнуть в objectid сейчас займусь
Arams
и тогда match заработает
Arams
правильно понял?
Daniil
Да
Arams
благодарю за ответы. после конвертации все работает
RusaXXX
Подскажите а монга умеет сама приводить типы
Столкнулся с проблемой, что с клиента приходит вот такой объект
{ pageSize: '5', fields: { header: '0' } }
я пытаюсь прокинуть это в запрос к монге, но она ругается что мол ей нужны числа а не строки
Nick
Ilya
всем привет:) кто нибудь сможет проконсультировать по mongoose?) я фронтенд разработчик, поэтому чуток не догоняю в чем проблема, мой вопрос по поводу populate
Ilya
есть 2 коллекции:
1) коллекция где я храню модель для анкеты
2) коллекция где я храню пройденные анкеты (там есть привязка к id пользователя и id анкеты)
Ilya
мне нужно сделать выборку только тех анкет, которые не проходил пользователь
Ilya
я где то видел где в populate подсовывается объект в котором есть ключ model
Ilya
https://mongoosejs.com/docs/api.html#query_Query-populate
Daniil
Ilya
блин, не понимаю) есть какой нибудь пример с model?)
ну а вообще то что будет 2 запроса например, это вообще адекватно?)
Ilya
как в реляционной бд это сделать я понимаю, а тут нифига не догоняю, конечно реально хочется сделать join все таки а не 2 запроса
moonrise
Добрый день, хотел спросить через что можно сделать аутентификацию в проекте Аsp.NET Core MVC.
Daniil
Ilya
SELECT QUESTIONARIES.ID AS "id",
QUESTIONARIES.TITLE AS "title",
QUESTIONARIES.DESCRIPTION AS "description",
QUESTIONARIES.PUBLICATION_DATE AS "publicationDate",
QUESTIONARIES.PLANNED_END_DATE AS "plannedEndDate",
QUESTIONARIES.ACTUAL_END_DATE AS "actualEndDate"
FROM QUESTIONARIES
LEFT JOIN COMPLETED_QUESTIONARIES
ON QUESTIONARIES.ID = COMPLETED_QUESTIONARIES.QUESTIONARY_ID AND COMPLETED_QUESTIONARIES.UKL = #{ukl}
WHERE QUESTIONARIES.STATE = #{state}
AND COMPLETED_QUESTIONARIES.ID IS NULL
ORDER BY QUESTIONARIES.CREATION_DATE DESC
Daniil
ну то есть по сути выбрали из обоих коллекций и потом только отфильтровали
в монге проще вообще хранить список пройденных анкет в самом пользователе
а с такой схемой сделать два запроса
Ilya
понял, спасибо:) буду пробовать)
Алексей
Всем привет. Имею в бд url в котором есть заглавная буква. Когда скрипт делает запрос в бд по указанному url то не находит его т.к скрипт ищет с прописной буквой. Можно как-то со стороны монги проиндексировать все значения по полю в нижний регистр ?
Nick
Алексей
Nick
ну значит пишите регулярки
yopp
inqfen
Это тебе скорее не в чат монги, а в чат ноды какой-нибудь
Kirill
Nick
если вопрос стоит так, то сначала изучить экспресс, а точнее nodejs без использования монги. потом сделать каркас того функционала который хочется (чат) и потом уже когда будет понимание этой фичи, то обращаться к туториалам express+mongo. А дальше углубляться в изучение компонентов по отдельности
Daniyar
ребят в Robo 3T можно запросы делать типа updateMany, aggregate,... etc??
Nick
Daniyar
Гена
Подскажите как в подключении указать теги ?
&readPreferenceTags=
как то так?
yopp
https://docs.mongodb.com/manual/reference/connection-string/#connections-connection-options
Гена
yopp
https://docs.mongodb.com/manual/reference/connection-string/#urioption.readPreferenceTags
yopp
Нет
Гена
а
Гена
всё
Гена
простите
Гена
я слепой..
Гена
спасибо большое
Philipp
Ребят, есть две коллекции: coll_a и coll_b, в coll_a хранятся документы вида:
{
field: foo,
b_wrapper: [
{
field: bar,
ref: ObjectId(id_of_doc_from_coll_b)
{
]
}
я не хочу подставлять в поле ref тело документа из coll_b, вместо этого я хочу в ответе на запрос ответить документом вида:
{
A_ENTITIES: [{field: foo, ...}],
B_ENTITIES: [{...}]
}
Если выбрать сначала нужные документы из coll_a, то я могу потом проитерироваться по полям ref и выбрать нужные документы из coll_b, но может есть какой-нибудь способ запросить эти данные за 1 раз?
Nick
Ребят, есть две коллекции: coll_a и coll_b, в coll_a хранятся документы вида:
{
field: foo,
b_wrapper: [
{
field: bar,
ref: ObjectId(id_of_doc_from_coll_b)
{
]
}
я не хочу подставлять в поле ref тело документа из coll_b, вместо этого я хочу в ответе на запрос ответить документом вида:
{
A_ENTITIES: [{field: foo, ...}],
B_ENTITIES: [{...}]
}
Если выбрать сначала нужные документы из coll_a, то я могу потом проитерироваться по полям ref и выбрать нужные документы из coll_b, но может есть какой-нибудь способ запросить эти данные за 1 раз?
Если вы про аналог union в sql то его нет, хотя можно извратиться с использованием выборки коестанты с двумя лукапами с условиями и последующий корректировкой структуры
yopp
Philipp
Denis 災 nobody
Daniil
Denis 災 nobody
спам же