Объединение 2 объектов коллекции MongoDB с подчеркиванием или что-то еще?

1

Я делаю запрос для всех comments и commentLikes. По существу я пробегаем по коллекции комментариев, на мой взгляд, но мне нужно, чтобы связать commentLikes с comments. Прямо сейчас commentLikes ссылается на comments._id как commentLikes.comment_id.

Я рассматривал возможность использования подчеркивания для этого, поскольку есть некоторые полезные функции полезности, но какие из них я мог бы использовать? Я закончил играть с _.where но не уверен, что это правильный инструмент для работы.

Это лучший способ сделать это?

var comments = 
[ { submission_id: '513d3702b99f8b1ca5000026',
    comment: 'asdfnasdfoiasdfiosdaf',
    user_id: '1',
    _id: '5157e79c562277e457000011',
    deleted: false,
    created: 'Sun Mar 31 2013 00:37:00 GMT-0700 (PDT)',
    parent_id: null },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment: 'asdfioasdfoiasdjiofasdijofjiasodf',
    user_id: '1',
    _id: '5157e799562277e457000010',
    deleted: false,
    created: 'Sun Mar 31 2013 00:36:57 GMT-0700 (PDT)',
    parent_id: null },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment: 'sdafijsadjiofasoijfjaiosdfjioasdfjiosdaf',
    user_id: '1',
    _id: '5157e797562277e45700000f',
    deleted: false,
    created: 'Sun Mar 31 2013 00:36:55 GMT-0700 (PDT)',
    parent_id: null },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment: 'asdfjiadsfojidfsjoaifdaijofdasijods',
    user_id: '1',
    _id: '5157e794562277e45700000e',
    deleted: false,
    created: 'Sun Mar 31 2013 00:36:52 GMT-0700 (PDT)',
    parent_id: null },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment: 'asdfiasdfijoasdfoijas',
    user_id: '1',
    _id: '5157e40227bf651157000280',
    deleted: false,
    created: 'Sun Mar 31 2013 00:21:38 GMT-0700 (PDT)',
    parent_id: null } ];

var commentLikes =
    [ { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e40227bf651157000280',
    user_id: 1,
    _id: '5157e40527bf651157000286',
    created: 'Sun Mar 31 2013 00:21:41 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e40227bf651157000280',
    user_id: 1,
    _id: '5157e40b27bf65115700028e',
    created: 'Sun Mar 31 2013 00:21:47 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e797562277e45700000f',
    user_id: 1,
    _id: '5157e7cc9c1fe3ed57000001',
    created: 'Sun Mar 31 2013 00:37:48 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e799562277e457000010',
    user_id: 1,
    _id: '5157e7cd9c1fe3ed57000002',
    created: 'Sun Mar 31 2013 00:37:49 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e79c562277e457000011',
    user_id: 1,
    _id: '5157e7ce9c1fe3ed57000003',
    created: 'Sun Mar 31 2013 00:37:50 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e79c562277e457000011',
    user_id: 1,
    _id: '5157e7d19c1fe3ed57000004',
    created: 'Sun Mar 31 2013 00:37:53 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e79c562277e457000011',
    user_id: 1,
    _id: '5157e7d29c1fe3ed57000005',
    created: 'Sun Mar 31 2013 00:37:54 GMT-0700 (PDT)' },
  { submission_id: '513d3702b99f8b1ca5000026',
    comment_id: '5157e79c562277e457000011',
    user_id: 1,
    _id: '5157e7d29c1fe3ed57000006',
    created: 'Sun Mar 31 2013 00:37:54 GMT-0700 (PDT)' } ];

var newCommentObj = comments;

_.map(newCommentObj, function(key) {
    // get commentLikes for each comment
    var commentId = key._id,
        likes = _.where(commentLikes, {comment_id : commentId});

});

Если нет, как мне это сделать? Каков правильный способ сделать это с помощью нескольких коллекций Mongoose? Я исхожу из традиционного фона MySQL, так что не имея ассоциаций, я привык.

Теги:
mongoose
underscore.js

1 ответ

0
Лучший ответ

Вы можете сделать это, используя подчеркивание groupBy а map - рабочий пример.

Также вы можете комбинировать свои коллекции на "mongodb", используя mapReduce посмотреть подробности.

  • 0
    Хм, хорошо, так что я думаю, что у меня может быть проблема, поскольку возвращаемое на самом деле не является newCommentObj поэтому newCommentObj возвращает это: pastebin.com/7tUNVCdQ . В этом примере есть 2 комментария, и один из них имеет комментарий как. Я пытался упорядочить _id каждого комментария, но это не помогло.
  • 0
    На самом деле не важно. Кажется, когда он печатает его на консоли, он не показывает вложенные лайки ... Странно. Но они на самом деле отправляются на просмотр. Ну, это решает это. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню