1

commentsすべてのとのクエリを実行していますcommentLikes。基本的に、ビュー内のコメント コレクションをループしていますが、に関連付ける必要がありcommentLikesますcomments。現在、 ascommentLikesへの参照があります。comments._idcommentLikes.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 のバックグラウンドを持っているので、関連付けがないことに慣れてきました。

4

1 に答える 1

0

groupByアンダースコアを使用して実行できます。これが実際のmap です。

また、詳細についてはmapReduce こちらを参照して、「mongodb」でコレクションを結合することもできます。

于 2013-03-31T13:21:19.557 に答える