Anonymous
Нифига уровень спама
Anonymous
@yatoba
Richard
ребят, может кто-нибудь поскажет, как мне сделать фильтрацию по вложенным документам? вот есть у меня { "_id": {"$oid":"12345"}, "chenibud": true } // в другой коллекции { "_id": {"$oid":"567789"}, "сhild": {"$oid":"12345"} } вопрос, как мне сделать фильтр , что бы {child.chenibud: true}, т.е. как фильтровать документы по вложенным в них ссылкам на другие документы?
Richard
обыскался уже, не понимаю вообще
Yaroslav
если я правильно тебя понял, то через aggregation это несложно делается. сначала делаешь lookup этих двух коллекций, потом фильтруешь. можно между lookup и фильтрацие вставить unwind.
Richard
если я правильно тебя понял, то через aggregation это несложно делается. сначала делаешь lookup этих двух коллекций, потом фильтруешь. можно между lookup и фильтрацие вставить unwind.
а как это в виде запроса выглядит? я просто не понимаю, как монге сказать, что вот достань мне все objectid тех документов в одной коллекции, и выдай мне все документы, в которых child находится в результате прошлой филтрации
Yaroslav
посмотри примеры по lookup. это несложно. https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
Yaroslav
а как это в виде запроса выглядит? я просто не понимаю, как монге сказать, что вот достань мне все objectid тех документов в одной коллекции, и выдай мне все документы, в которых child находится в результате прошлой филтрации
db.parent.aggregate([ { $lookup: { from: "children", localField: "child", foreignField: "_id", as: "children" } }, { $match: { "children.chenibud": true } } ]) примерно так. названия коллекций подствавь правильные.
Richard
db.parent.aggregate([ { $lookup: { from: "children", localField: "child", foreignField: "_id", as: "children" } }, { $match: { "children.chenibud": true } } ]) примерно так. названия коллекций подствавь правильные.
попробовал, не работает 😭 ну ладно, я по крайней мере могу двумя запросами это сделать, пусть и абсолютно неэффективно
Richard
Вы, похоже, пытаетесь RDBMS/SQL логику натянуть на монгу
ну вообще, ровно это я и пытаюсь сделать, что, видимо, очень неправильно
Πάαβο ☃️
Как вам логично подсказывают, в монге подобное делается через aggregation
Πάαβο ☃️
А join'ов чтобы в один запрос сделать cross-product в монге нет, не стоит пытаться RDBMS/SQL представления о правильности и эффективности в монге использовать ни для проектирования ни для запросов
Πάαβο ☃️
Т.е. в вашем случае либо aggregation либо поменять дизайн чтобы вложенные документы были именно вложенными, а не в другой коллекции
Zaur
есть кто юзает nodejs + mongodb? Как с помощью этого драйвера вывести explain("executionStats" ) ?
Artem
MongoClient.connect('mongodb://localhost:27018/mongodb', function(err, db) { db.collection('fanclub') .find({age: {$gte: 33, $lte: 40}}) .explain(function(err2, explain) { var model = new ExplainPlanModel(explain, {parse: true}); console.log(model.executionSuccess); // ==> true console.log(model.isCovered); // ==> false console.log(model.isCollectionScan); // ==> false console.log(model.usedIndex); // ==> "age_1" console.log(model.inMemorySort); // ==> false console.log(model.nReturned); // ==> 191665 console.log(model.executionTimeMillis); // ==> 146 // ... db.close(); }); });
Zaur
вот так callback вызывается, но в exp нету информации executionStats
Zaur
под executionStats я имею ввиду вот такой вывод, который показывает оболочка mongo
Dmytro 🇺🇦
Подскажите как подобное ( {film_name:1, date:1, director:1, actor_name:1}) запихнуть в MongoDB\Driver\Query вторым параметром. db.Films.find({ actor_name: "Пол Джаматти" }, {film_name:1, date:1, director:1, actor_name:1}).pretty()
Dmytro 🇺🇦
не пойму какой синтаксис должен быть
🔰ш
Приветики! Подскажите, как можно сделать aggregate pipeline так, чтобы отфильтровать текущий результат по ключам из соседней таблицы?
🔰ш
Тобишь у меня текущий $$this в пайплайне выглядит как массив документов с айдишниками, надо сделать запрос в соседнюю таблицу, результатом которого будет список документов, у которых есть поле key. и если в $$this будет документ c _id = key его надо удалить
🔰ш
Left Exclusive на этой картинке...
🔰ш
https://medium.com/dsmli/mongodb-left-anti-join-fac00eda33fc
🔰ш
если кому интересно
Евгений
может кто-то знает как сделать Promise.All по arr c вызовом агрегации?
I
Всем привет. Походу эта группа просьб о помощи =) У меня тоже вопрос, может кто знает как спарсить json string c точкой Document
I
bson орет
I
https://stackoverflow.com/questions/66780505/when-parsing-json-to-document-why-mapkeydotreplacement-doesnt-work
Nick
использовать нормальные ключ без точки
I
вот на корявом английском пример кинул
Nick
это не поддерживается
I
использовать нормальные ключ без точки
к сожалению я получаю уже данные, где точка есть. А mongoDB как бы умеет вроде это дело разруливать
I
но нихрена не разруливает =(
Nick
так ведь не умеет
Nick
Until support is added in the query language, the use of $ and . in field names is not recommended and is not supported by the official MongoDB drivers.
Nick
смотрите поддерж ивает ли ваш драйвер
Nick
видимо какието махинации делаются
I
у меня 4.2.2 кажется
I
если это оно
Nick
а что делает тогда setMapKeyDotReplacement ?
заменяет точку на символ который укажите
I
заменяет точку на символ который укажите
да, именно. Но почему не парсится bson -ом в документ?
I
или есть какой то другой способ конвертить json string в document ?
Nick
ну так драйвер то это делает когда в базу отправляет док, а не при попытке конвертнуть bson в док
I
с точкой
I
=)
Nick
сначала в мапу
Nick
стандартным json мапером
Nick
потом преобразовать как вам надо, потом уже подготовленную мапу уже отпрапвлять в базу
I
а можно где пример посмотреть ?
I
json string -> mongo db
I
везде ющаю bson
I
юзают
Nick
вообще обычно json -> entity -> mongo
Nick
и никаких проблем нет
I
вообще обычно json -> entity -> mongo
это в идеале, но у меня модель, совсем не монговая
I
она ругается ужастно
I
там используется Gson
I
facebook api короче
I
Я хочу готовые сущности, сохранить в БД
Nick
нет entity, так заменить на map тут имеется сохранение в монгу из мапы https://howtodoinjava.com/mongodb/java-mongodb-insert-documents-in-collection-examples/
I
Спасибо добрый человек =)
I
ухты, работает!
I
ура =)
I
json -> map -> save(BasicDBOobject(<resultMap>), "collection_name" ) -> findOne(query, Doccument::class.java, "collection_name")
I
портянка однако =)
I
Я на питоне использовал urllib. Что бы избавиться от точки.
да в спринге есть механизмы. Но блин, монго разрабы как то не доделали
I
bson.Document.parse не парсит с точкой, при этом монга может сохранить с точкой
I
при этом точку она поменяет на выбранный символ в настройках
I
а при вытаскивании данных, она вернет опять как точку
Mr.Almond
Привет! Подскажите, почему aggregate зависает, если я запускаю mongo shell из под рута?
Oleh Kopyl
Доброе утро :) Это же OOM Kill? https://pastebin.com/f2Et8tw8