Как бы я go отфильтровал набор записей на основе их дочерних записей.
Допустим, у меня есть коллекция Item
, в которой есть поле для другой коллекции Bag
, называемое bagId
, Я хотел бы найти все Items
, где поле в Bags
соответствует некоторому предложению.
Т.е. db.Items.find( { "where bag.type:'Paper' " })
. Как бы я go сделал это в MongoDB. Я понимаю, что мне нужно join
на Bags, а затем связать, где Item.bagId == Bag._id
Я использовал Studio3T для преобразования SQL GROUP BY
в Mon go агрегат. Мне просто интересно, есть ли какой-нибудь дефакто способ сделать это.
Должен ли я выполнять миграцию данных, чтобы просто включить Bag.type
в каждый Item
документ (не хочу привыкать постоянно вносить изменения в схему каждый раз, когда я хочу отсортировать / фильтр Items
по Bag
полям).
Используйте что-то вроде https://github.com/meteorhacks/meteor-aggregate (пока с этим синтаксисом не повезло)
Графограф https://github.com/cult-of-coders/grapher Я немного поиграл с этим, и хотя это круто, я не уверен, что это действительно решит мою проблему. Я могу использовать его для добавления Bag.type
к каждому возвращенному элементу, но я не понимаю, как это могло бы помочь мне отфильтровать каждый элемент по Bag.type
.
Является ли это только одним из компромиссы использования No SQL дБмс? Какой вариант выше рекомендуется или есть другие идеи?
Спасибо