【问题标题】:Combining 2 MongoDB collection objects with underscore or something else?将 2 个 MongoDB 集合对象与下划线或其他内容结合起来?
【发布时间】:2013-03-31 21:26:20
【问题描述】:

我正在查询所有commentscommentLikes。从本质上讲,我正在循环浏览我认为的 cmets 集合,但我需要将commentLikescomments 关联起来。现在commentLikes 引用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 背景,所以我已经习惯了没有关联。

【问题讨论】:

    标签: javascript mongodb mongoose underscore.js


    【解决方案1】:

    您可以使用下划线的groupBymap here is 工作示例。

    您还可以使用 mapReduce look here 在“mongodb”中组合您的收藏以了解更多详情。

    【讨论】:

    • 嗯,好吧,所以我想我可能有问题,因为返回的内容实际上并没有被字符串化,所以newCommentObj 正在返回这个:pastebin.com/7tUNVCdQ。在这个例子中,有 2 个 cmets,其中一个有类似的评论。我试图将每条评论的_id 字符串化,但这没有任何帮助。
    • 其实没关系。似乎当它将它打印到控制台时,它没有显示嵌套的喜欢......奇怪。但它们实际上是被发送到视图中的。好吧,这就解决了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 2016-08-13
    • 2020-12-05
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2021-09-28
    • 2021-06-03
    相关资源
    最近更新 更多