У меня есть несколько документов из нижеуказанной формы в моей коллекции conversations
, в которых есть чат между несколькими людьми. ThreadId имеет идентификатор одного из пользователей в разговоре между 2.Mongoose/Mongodb mapReduce или aggregate to group by single field
Диалог между 51c0c35b7daabc3410000001
и 51c0c35b7daabc3410000002
{
"from" : ObjectId("51c0c35b7daabc3410000001"),
"to" : ObjectId("51c0c35b7daabc3410000002"),
"threadId" : ObjectId("51c0c35b7daabc3410000002"),
"message" : "Hi there!"
}
{
"from" : ObjectId("51c0c35b7daabc3410000002"),
"to" : ObjectId("51c0c35b7daabc3410000001"),
"threadId" : ObjectId("51c0c35b7daabc3410000002"),
"message" : "How are you?"
}
{
"from" : ObjectId("51c0c35b7daabc3410000001"),
"to" : ObjectId("51c0c35b7daabc3410000002"),
"threadId" : ObjectId("51c0c35b7daabc3410000002"),
"message" : "I am good. How are you?"
}
Диалог между 51c0c35b7daabc3410000001
и 51c0c69989a44a6812000003
{
"from" : ObjectId("51c0c35b7daabc3410000001"),
"to" : ObjectId("51c0c69989a44a6812000003"),
"threadId" : ObjectId("51c0c69989a44a6812000003"),
"message" : "Hello!"
}
{
"from" : ObjectId("51c0c69989a44a6812000003"),
"to" : ObjectId("51c0c35b7daabc3410000001"),
"threadId" : ObjectId("51c0c69989a44a6812000003"),
"message" : "Hey.."
}
Я хочу группы на основе ThreadId а выход должен иметь вид
{
"from" : ObjectId("51c0c35b7daabc3410000001"),
"to" : ObjectId("51c0c35b7daabc3410000002"),
"threadId" : ObjectId("51c0c35b7daabc3410000002"),
"message" : "I am good. How are you?"
}
{
"from" : ObjectId("51c0c69989a44a6812000003"),
"to" : ObjectId("51c0c35b7daabc3410000001"),
"threadId" : ObjectId("51c0c69989a44a6812000003"),
"message" : "Hey.."
}
Итак, я хочу найти все документы с отдельным threadId (или группой, основанной только на threadId). Результат также должен включать все остальные поля в документе.
mapReduce, совокупность/группа, отличная или их комбинация? Как мне это сделать?
EDIT
Чтобы поместить его в SQL заявление, я хочу что-то же просто, как
SELECT * FROM GROUP BY разговоров ThreadId;
Вам не нужен $ project на этом – advncd
Как вы создали threadId? – Sekai