Я использую MongoDB, и я закончил с двумя коллекциями (непреднамеренно).Как запросить две коллекции одновременно?
Первая коллекция (образец) имеет 100 миллионов записей (Tweets) со следующей структурой:
{
"_id" : ObjectId("515af34297c2f607b822a54b"),
"text" : "bla bla ",
"id" : NumberLong("314965680476803072"),
"user" :
{
"screen_name" : "TheFroooggie",
"time_zone" : "Amsterdam",
},
}
Вторая коллекция (пользователей) с 30 миллионов записей уникальных пользователей из коллекции чириканье и, похоже, это
{ "_id" : "000000_n", "target" : 1, "value" : { "count" : 5 } }
где _id в коллекции пользователей является user.screen_name из коллекции чириканья, цель их статус (спамер или нет), и, наконец, value.count этого числа пользователя появился в нашем первом сбор (образец) коллекции (e .г. количество захваченных твитов)
Теперь я хотел бы сделать следующий запрос:
Я хотел бы вернуть все документы из коллекции образцов (твиты), где пользователь имеет целевое значение = 1
Другими словами, я хочу, например, вернуть все твиты всех спамеров.
Запросы могут действовать только по одной коллекции за раз. Нет объединений. Ther - некоторые рамки, которые могут заставить его казаться, что есть объединения, но это иллюзия, и на самом деле сделано много запросов. В StackOverflow есть много вопросов/ответов. – WiredPrairie
Спасибо WiredPrairie за ваш комментарий. Я изучил некоторые решения в StackOverflow, многие из них были недостаточно эффективны, чтобы учесть количество записей, которые у меня есть, или они не отвечали моим потребностям. Интересно, действительно ли на самом деле есть третья коллекция с «пользователями» (вторая коллекция) и их твитами в качестве поддокументов. Тем не менее, мне нужна эффективная реализация, чтобы закончить это в разумные сроки, и я буду признателен за любую помощь, поскольку я новичок в этом нереляционном мире – amaatouq
, вы не хотите встраивать твиты в пользовательские документы. в чем проблема с двумя запросами? Если вещи будут правильно проиндексированы, это будет достаточно быстро (конечно, быстрее, чем поддержание третьей коллекции).Если это важно сделать в одном запросе, вы можете денормализовать целевое поле в подзадаче пользователя коллекции твитов, а затем выполнить пакетное задание, которое обновляет их, когда кто-то «реклассифицируется». –